<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials</link><pubDate>Wed, 23 Jul 2025 20:29:57 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Current Revision posted to Appian Knowledge Base by Ryan Good on 7/23/2025 8:29:57 PM&lt;br /&gt;
&lt;p id="mcetoc_1j0nd6iak1"&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;Note for Appian on Kubernetes&lt;/strong&gt;: In operator versions v0.181.0 and later, the Appian Operator can handle the search server password, so you no longer need to manually specify one. If you had previously set a search server password, you can refer to the steps listed under&amp;nbsp;&lt;a href="/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#:~:text=number%20of%20replicas.-,Operator%20v0.181.0%20and%20Later,-The%20following%20assumes"&gt;Operator v0.181.0 and Later&lt;/a&gt;&amp;nbsp;if you wish to have the Appian Operator manage the password instead.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j0nd6bhn0"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;associated with the search server. This is a newly required property and was introduced in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;h3 id="mcetoc_1hq5nbakc0"&gt;Appian on Kubernetes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.176.0 and Earlier&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scale down the search server and webapp stateful sets to have 0 replicas so that neither have running pods.&lt;/li&gt;
&lt;li&gt;Edit the Appian CR file to contain the following entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;customProperties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;underneath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;spec&lt;/code&gt;:&amp;nbsp;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
 customProperties:
   conf.search-server.user.appian.password: &amp;quot;&amp;lt;VALUE&amp;gt;&amp;quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a file named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&amp;nbsp;&lt;/strong&gt;that has the following contents:&lt;br /&gt;&lt;code&gt;conf.password.SearchServer=&amp;lt;VALUE&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create the following secret within the same namespace as the appian object:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following value to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwordsPropertiesSecretName&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;webapp&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the Appian CR file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      ...
   webapp:
      passwordsPropertiesSecretName: passwords-properties&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Apply the changes made to the Appian CR file.&lt;/li&gt;
&lt;li&gt;To bring up the pods for the components, scale up the search server and webapp stateful sets to their previous number of replicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.181.0 and Later&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The following assumes your Appian Operator is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/k8s/release-notes.html"&gt;v0.181.0 or later&lt;/a&gt;, and your Appian major version includes the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Hotfixes.html"&gt;July 03, 2025 hotfix release or later&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Manually specifying a search server password in the CR or passwords-properties secret is no longer needed. If a password had been previously set one and would like to be removed, follow the steps below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the Appian CR file to remove the&amp;nbsp;&lt;code&gt;.spec.customProperties.conf.search-server.user.appian.password&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;field:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Recreate the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret. If the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret stored other credentials apart from&lt;code&gt;&amp;nbsp;conf.password.SearchServer&lt;/code&gt;, take note of them as&amp;nbsp;they&amp;nbsp;will need to added back.
&lt;ol&gt;
&lt;li&gt;Delete the secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; delete secret passwords-properties&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Edit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file to remove the&amp;nbsp;&lt;span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&amp;nbsp;entry. If the file does not exist, create a new one and add back any other credentials that the secret previously stored. If&amp;nbsp;&lt;code&gt;passwords-properties&lt;/code&gt;&amp;nbsp;did not have any other credentials previously, a blank&amp;nbsp;&lt;strong&gt;passwords.properties&lt;/strong&gt;&amp;nbsp;file is fine.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Re-create the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Start Appian. If the above steps were done on a live site, restart the search-server and webapp pods by deleting them for the changes to be applied.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1hq5nk86i0"&gt;Legacy Self-Managed Appian&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties.examples&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file and rename it&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry with the password from step 3.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: July 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/20</link><pubDate>Wed, 23 Jul 2025 14:38:45 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 20 posted to Appian Knowledge Base by pauline.delacruz on 7/23/2025 2:38:45 PM&lt;br /&gt;
&lt;p id="mcetoc_1j0nd6iak1"&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;Note for Appian on Kubernetes&lt;/strong&gt;: In operator versions v0.181.0 and later, the Appian Operator can handle the search server password, so you no longer need to manually specify one. If you had previously set a search server password, you can refer to the steps listed under&amp;nbsp;&lt;a href="/solution-engineering/w/kb_draft/3690/draft-rev-supp-1487-kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#:~:text=number%20of%20replicas.-,Operator%20v0.181.0%20and%20Later,-The%20following%20assumes"&gt;Operator v0.181.0 and Later&lt;/a&gt;&amp;nbsp;if you wish to have the Appian Operator manage the password instead.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j0nd6bhn0"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;associated with the search server. This is a newly required property and was introduced in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;h3 id="mcetoc_1hq5nbakc0"&gt;Appian on Kubernetes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.176.0 and Earlier&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scale down the search server and webapp stateful sets to have 0 replicas so that neither have running pods.&lt;/li&gt;
&lt;li&gt;Edit the Appian CR file to contain the following entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;customProperties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;underneath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;spec&lt;/code&gt;:&amp;nbsp;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
 customProperties:
   conf.search-server.user.appian.password: &amp;quot;&amp;lt;VALUE&amp;gt;&amp;quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a file named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&amp;nbsp;&lt;/strong&gt;that has the following contents:&lt;br /&gt;&lt;code&gt;conf.password.SearchServer=&amp;lt;VALUE&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create the following secret within the same namespace as the appian object:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following value to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwordsPropertiesSecretName&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;webapp&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the Appian CR file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      ...
   webapp:
      passwordsPropertiesSecretName: passwords-properties&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Apply the changes made to the Appian CR file.&lt;/li&gt;
&lt;li&gt;To bring up the pods for the components, scale up the search server and webapp stateful sets to their previous number of replicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.181.0 and Later&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The following assumes your Appian Operator is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/k8s/release-notes.html"&gt;v0.181.0 or later&lt;/a&gt;, and your Appian major version includes the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Hotfixes.html"&gt;July 03, 2025 hotfix release or later&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Manually specifying a search server password in the CR or passwords-properties secret is no longer needed. If a password had been previously set one and would like to be removed, follow the steps below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the Appian CR file to remove the&amp;nbsp;&lt;code&gt;.spec.customProperties.conf.search-server.user.appian.password&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;field:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Recreate the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret. If the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret stored other credentials apart from&lt;code&gt;&amp;nbsp;conf.password.SearchServer&lt;/code&gt;, take note of them as&amp;nbsp;they&amp;nbsp;will need to added back.
&lt;ol&gt;
&lt;li&gt;Delete the secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; delete secret passwords-properties&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Edit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file to remove the&amp;nbsp;&lt;span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&amp;nbsp;entry. If the file does not exist, create a new one and add back any other credentials that the secret previously stored. If&amp;nbsp;&lt;code&gt;passwords-properties&lt;/code&gt;&amp;nbsp;did not have any other credentials previously, a blank&amp;nbsp;&lt;strong&gt;passwords.properties&lt;/strong&gt;&amp;nbsp;file is fine.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Re-create the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Start Appian. If the above steps were done on a live site, restart the search-server and webapp pods by deleting them for the changes to be applied.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1hq5nk86i0"&gt;Legacy Self-Managed Appian&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties.examples&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file and rename it&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry with the password from step 3.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: July 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/19</link><pubDate>Wed, 23 Jul 2025 14:38:26 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 19 posted to Appian Knowledge Base by pauline.delacruz on 7/23/2025 2:38:26 PM&lt;br /&gt;
&lt;p id="mcetoc_1j0nd6iak1"&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;Note for Appian on Kubernetes&lt;/strong&gt;: In operator versions v0.181.0 and later, the Appian Operator can handle the search server password, so you no longer need to manually specify one. If you had previously set a search server password, you can refer to the steps listed under&amp;nbsp;&lt;a href="/solution-engineering/w/kb_draft/3690/draft-rev-supp-1487-kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#:~:text=number%20of%20replicas.-,Operator%20v0.181.0%20and%20Later,-The%20following%20assumes"&gt;Operator v0.181.0 and Later&lt;/a&gt;&amp;nbsp;if you wish to have the Appian Operator manage the password instead.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j0nd6bhn0"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper content-scrollable-wrapper-scrolled"&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;associated with the search server. This is a newly required property and was introduced in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;h3 id="mcetoc_1hq5nbakc0"&gt;Appian on Kubernetes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.176.0 and Earlier&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scale down the search server and webapp stateful sets to have 0 replicas so that neither have running pods.&lt;/li&gt;
&lt;li&gt;Edit the Appian CR file to contain the following entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;customProperties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;underneath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;spec&lt;/code&gt;:&amp;nbsp;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
 customProperties:
   conf.search-server.user.appian.password: &amp;quot;&amp;lt;VALUE&amp;gt;&amp;quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a file named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&amp;nbsp;&lt;/strong&gt;that has the following contents:&lt;br /&gt;&lt;code&gt;conf.password.SearchServer=&amp;lt;VALUE&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create the following secret within the same namespace as the appian object:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following value to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwordsPropertiesSecretName&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;webapp&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the Appian CR file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      ...
   webapp:
      passwordsPropertiesSecretName: passwords-properties&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Apply the changes made to the Appian CR file.&lt;/li&gt;
&lt;li&gt;To bring up the pods for the components, scale up the search server and webapp stateful sets to their previous number of replicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Operator v0.181.0 and Later&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The following assumes your Appian Operator is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/k8s/release-notes.html"&gt;v0.181.0 or later&lt;/a&gt;, and your Appian major version includes the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Hotfixes.html"&gt;July 03, 2025 hotfix release or later&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Manually specifying a search server password in the CR or passwords-properties secret is no longer needed. If a password had been previously set one and would like to be removed, follow the steps below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the Appian CR file to remove the&amp;nbsp;&lt;code&gt;.spec.customProperties.conf.search-server.user.appian.password&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;field:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:&lt;/pre&gt;&lt;br /&gt;
&lt;div class="content-scrollable-wrapper"&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Recreate the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret. If the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret stored other credentials apart from&lt;code&gt;&amp;nbsp;conf.password.SearchServer&lt;/code&gt;, take note of them as&amp;nbsp;they&amp;nbsp;will need to added back.
&lt;ol&gt;
&lt;li&gt;Delete the secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; delete secret passwords-properties&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Edit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file to remove the&amp;nbsp;&lt;span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&amp;nbsp;entry. If the file does not exist, create a new one and add back any other credentials that the secret previously stored. If&amp;nbsp;&lt;code&gt;passwords-properties&lt;/code&gt;&amp;nbsp;did not have any other credentials previously, a blank&amp;nbsp;&lt;strong&gt;passwords.properties&lt;/strong&gt;&amp;nbsp;file is fine.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Re-create the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwords-properties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;secret:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Start Appian. If the above steps were done on a live site, restart the search-server and webapp pods by deleting them for the changes to be applied.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1hq5nk86i0"&gt;Legacy Self-Managed Appian&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties.examples&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file and rename it&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry with the password from step 3.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: July 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/18</link><pubDate>Fri, 07 Feb 2025 17:08:30 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 18 posted to Appian Knowledge Base by Ryan Good on 2/7/2025 5:08:30 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;associated with the search server. This is a newly required property and was introduced in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;h3 id="mcetoc_1hq5nk86i0"&gt;Self-Managed Appian&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties.examples&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file and rename it&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry with the password from step 3.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1hq5nbakc0"&gt;Appian on Kubernetes&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Scale down the search server and webapp stateful sets to have 0 replicas so that neither have running pods.&lt;/li&gt;
&lt;li&gt;Edit the Appian CR file to contain the following entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;customProperties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;underneath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;spec&lt;/code&gt;:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      conf.search-server.user.appian.password: &amp;quot;&amp;lt;VALUE&amp;gt;&amp;quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a file named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&amp;nbsp;&lt;/strong&gt;that has the following contents:&lt;br /&gt;&lt;code&gt;conf.password.SearchServer=&amp;lt;VALUE&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create the following secret within the same namespace as the appian object:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following value to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwordsPropertiesSecretName&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;webapp&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the Appian CR file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      ...
   webapp:
      passwordsPropertiesSecretName: passwords-properties&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Apply the changes made to the Appian CR file.&lt;/li&gt;
&lt;li&gt;To bring up the pods for the components, scale up the search server and webapp stateful sets to their previous number of replicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/17</link><pubDate>Wed, 25 Sep 2024 20:30:23 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 17 posted to Appian Knowledge Base by Ryan Good on 9/25/2024 8:30:23 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;associated with the search server. This is a newly required property and was introduced in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;h3 id="mcetoc_1hq5nk86i0"&gt;Self-Managed Appian&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties.examples&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file and rename it&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;conf.password.SearchServer&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1hq5nbakc0"&gt;Appian on Kubernetes&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Scale down the search server and webapp stateful sets to have 0 replicas so that neither have running pods.&lt;/li&gt;
&lt;li&gt;Edit the Appian CR file to contain the following entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;customProperties&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;underneath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;spec&lt;/code&gt;:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      conf.search-server.user.appian.password: &amp;quot;&amp;lt;VALUE&amp;gt;&amp;quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a file named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;passwords.properties&amp;nbsp;&lt;/strong&gt;that has the following contents:&lt;br /&gt;&lt;code&gt;conf.password.SearchServer=&amp;lt;VALUE&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create the following secret within the same namespace as the appian object:&lt;br /&gt;&lt;code&gt;kubectl -n &amp;lt;NAMESPACE&amp;gt; create secret generic passwords-properties --from-file=passwords.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following value to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;passwordsPropertiesSecretName&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;entry under&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;webapp&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the Appian CR file:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
   customProperties:
      ...
   webapp:
      passwordsPropertiesSecretName: passwords-properties&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Apply the changes made to the Appian CR file.&lt;/li&gt;
&lt;li&gt;To bring up the pods for the components, scale up the search server and webapp stateful sets to their previous number of replicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/16</link><pubDate>Mon, 23 Sep 2024 19:53:05 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 16 posted to Appian Knowledge Base by Ryan Good on 9/23/2024 7:53:05 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 6 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/15</link><pubDate>Tue, 10 Sep 2024 21:58:11 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 15 posted to Appian Knowledge Base by Ryan Good on 9/10/2024 9:58:11 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameter(s):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/14</link><pubDate>Tue, 10 Sep 2024 21:57:06 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 14 posted to Appian Knowledge Base by Ryan Good on 9/10/2024 9:57:06 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/13</link><pubDate>Thu, 05 Sep 2024 22:08:10 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 13 posted to Appian Knowledge Base by pauline.delacruz on 9/5/2024 10:08:10 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTTP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Tomcat, application server, search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-2322 Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/12</link><pubDate>Thu, 05 Sep 2024 22:07:09 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 12 posted to Appian Knowledge Base by pauline.delacruz on 9/5/2024 10:07:09 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: search server, infrastructure&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/11</link><pubDate>Tue, 03 Sep 2024 22:40:41 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 11 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:40:41 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/10</link><pubDate>Tue, 03 Sep 2024 22:38:37 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 10 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:38:37 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above and save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the new file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the password from step 2 and save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/9</link><pubDate>Tue, 03 Sep 2024 22:37:01 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 9 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:37:01 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password fit the following parameters, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above and save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the new password from step 2 and save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/8</link><pubDate>Tue, 03 Sep 2024 22:37:01 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 8 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:37:01 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the &lt;a href="https://docs.appian.com/suite/help/24.3/Upgrade_Guide.html#search-server-configuration"&gt;password&lt;/a&gt; associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password fit the following parameters, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server in the event they are already running.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;span&gt;&lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Modify the property &lt;span&gt;&lt;code&gt;conf.search-server.user.appian.password&lt;/code&gt;&amp;nbsp;&lt;/span&gt;such that its value fits the requirements outlined above and save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the new password from step 2 and save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/7</link><pubDate>Tue, 03 Sep 2024 22:30:59 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 7 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:30:59 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate using the provided credentials.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the password associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password fit the following parameters, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server, if they are already running.&lt;/li&gt;
&lt;li&gt;Modify the password provided in &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt; to fit the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the new password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/6</link><pubDate>Tue, 03 Sep 2024 22:29:14 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 6 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:29:14 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the password associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password fit the following parameters, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server, if they are already running.&lt;/li&gt;
&lt;li&gt;Modify the password provided in &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt; to fit the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the new password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/5</link><pubDate>Tue, 03 Sep 2024 22:28:21 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 5 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:28:21 PM&lt;br /&gt;
&lt;h2 id="mcetoc_1i6sviqh40"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;/span&gt;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS.mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:347) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:313) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
		at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
		at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
		at java.lang.Thread.run(Thread.java:840) ~[?:?]
YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck - ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/health] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]]&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;h2 id="mcetoc_1i6sviqh41"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;The cited errors indicate that the application server is unable to verify the health of the search server. The references to&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;code&gt;HTPP/1.1 403 Forbidden&lt;/code&gt; indicate that this is due to failure to properly authenticate.&lt;/p&gt;
&lt;p&gt;The most common cause of this error messaging is a&amp;nbsp;misconfiguration of the password associated with the search server. This is a newly required property and was introduced in &lt;a href="https://docs.appian.com/suite/help/24.3/Appian_Release_Notes.html#upgrade-search-server-to-version-8"&gt;Appian 24.3&lt;/a&gt; as part of the upgrade to Elasticsearch 8.&lt;/p&gt;
&lt;h2 id="mcetoc_1i6sviqh42"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A password used to satisfy the requirements of Elasticsearch 8 must fit the following parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Must be at least 7 characters long.&lt;/li&gt;
&lt;li&gt;Must not contain the following symbol: (=)&lt;/li&gt;
&lt;li&gt;Must not be preceded in any form by the following symbol: (#)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To apply a new password fit the following parameters, the following steps can be performed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the application server and search server, if they are already running.&lt;/li&gt;
&lt;li&gt;Modify the password provided in &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/search-server/conf/custom.properties&lt;/code&gt; to fit the requirements outlined above.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;&amp;lt;APPIAN_HOME&amp;gt;/conf/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make a copy of the &lt;strong&gt;passwords.properties.examples&lt;/strong&gt; file and rename it &lt;strong&gt;passwords.properties&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navigate to the bottom of the file and fill out the &lt;code&gt;conf.password.SearchServer&lt;/code&gt; entry with the new password from step 2.&lt;/li&gt;
&lt;li&gt;Save changes.&lt;/li&gt;
&lt;li&gt;Proceed to start up the search server then application server.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="mcetoc_1i6sviqh43"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/4</link><pubDate>Tue, 03 Sep 2024 22:10:32 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 4 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:10:32 PM&lt;br /&gt;
&lt;h2&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Interspersed between the above excerpts are the following traces referencing the Search Server.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.persistence.search.RestClientManagerUtil - error initializing client
com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException: The search server cannot be reached. Failed to connect to server at [localhost:9200]. Check that the search server is started. If running multiple application servers, check that appian-topology.xml is properly configured with the search cluster details. The appian-topology.xml file must be distributed to each /conf/ and /search-server/conf/ directory. See documentation for details.
	at com.appiancorp.suiteapi.common.exceptions.AppianRuntimeException.&amp;lt;init&amp;gt;(AppianRuntimeException.java:45) ~[appian-suiteapi-24.3.205.0.jar:?]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:69) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.healthcheck.SearchServerHealthCheck.isComponentHealthy(SearchServerHealthCheck.java:34) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.waitUntilComponentIsHealthy(WaitForStatefulComponents.java:105) ~[appian-ae-24.3.205.0.jar:?]
	at com.appiancorp.common.startup.WaitForStatefulComponents.lambda$startHealthChecks$0(WaitForStatefulComponents.java:117) ~[appian-ae-24.3.205.0.jar:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=security_exception, reason=action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178) ~[elasticsearch-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at org.elasticsearch.client.RestHighLevelClient.info(RestHighLevelClient.java:969) ~[elasticsearch-rest-high-level-client-7.17.19.jar:7.17.19]
	at com.appiancorp.common.persistence.search.RestClientManagerUtil.getRestClientManagerNoSpring(RestClientManagerUtil.java:52) ~[appian-ae-24.3.205.0.jar:?]
	... 7 more
	Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/], status line [HTTP/1.1 403 Forbidden]
{&amp;quot;error&amp;quot;:{&amp;quot;root_cause&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;}],&amp;quot;type&amp;quot;:&amp;quot;security_exception&amp;quot;,&amp;quot;reason&amp;quot;:&amp;quot;action [cluster:monitor/main] is unauthorized for user [health_check_user] with effective roles [] (assigned roles [health_check_role] were not found), this action is granted by the cluster privileges [monitor,manage,all]&amp;quot;},&amp;quot;status&amp;quot;:403}&lt;/pre&gt;
&lt;h2&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/3</link><pubDate>Tue, 03 Sep 2024 22:08:23 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 3 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:08:23 PM&lt;br /&gt;
&lt;h2&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:inherit;"&gt;Interspersed between the above statements will be the following traces referencing the Search Server.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/2</link><pubDate>Tue, 03 Sep 2024 22:06:57 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 2 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 10:06:57 PM&lt;br /&gt;
&lt;h2&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;After upgrading to&amp;nbsp;Appian 24.3 or beyond, the application server is unable to start while continuously citing the following within&amp;nbsp;&lt;strong&gt;tomcat-stdOut.log&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;[wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Search Server to be healthy...&lt;/pre&gt;
&lt;h2&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to Appian&amp;nbsp;versions 24.3 and later.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed:&amp;nbsp;September 2024&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>KB-XXXX Application server fails to start due to improperly configured search server credentials</title><link>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials/revision/1</link><pubDate>Tue, 03 Sep 2024 21:57:54 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:151f15ec-b4f6-4eea-a575-a4ced17adb20</guid><dc:creator>Ryan Good</dc:creator><comments>https://community.appian.com/support/w/kb/3582/kb-2322-application-server-fails-to-start-due-to-improperly-configured-search-server-credentials#comments</comments><description>Revision 1 posted to Appian Knowledge Base by Ryan Good on 9/3/2024 9:57:54 PM&lt;br /&gt;
&lt;p&gt;test&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>