<?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-2353 Webapp pod fails to start due to incorrect data source password factory</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>KB-2353 Webapp pod fails to start due to incorrect data source password factory</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory</link><pubDate>Wed, 08 Oct 2025 18:50:45 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Current Revision posted to Appian Knowledge Base by pauline.delacruz on 10/8/2025 6:50:45 PM&lt;br /&gt;
&lt;p&gt;The &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes (AoK), these credentials are often contained within a Kubernetes secret, but may also be specified in plaintext within the CR. &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;makes use of a data source factory in order to authenticate and create connections with the primary data source RDBMS.&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed using &lt;a href="https://docs.appian.com/suite/help/latest/k8s/migration-tool.html"&gt;Appian&amp;#39;s AoK migration tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span&gt;pod refuses to start, as it is waiting for the primary data source RDBMS to be healthy. The following error traces may be present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.PrimaryRdbmsHealthCheck - javax.naming.NamingException: Unexpected exception resolving reference with name [AppianDS] [Root exception is java.lang.IllegalArgumentException: Illegal base64 character 21]&lt;br /&gt;YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] INFO com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Primary datasource RDBMS to be healthy...&lt;br /&gt;YYYY-MM-DD HH:MM:SS WARNING [wait-for-component] org.apache.naming.NamingContext.lookup Unexpected exception resolving reference with name [AppianDS]&lt;br /&gt; java.lang.IllegalArgumentException: Illegal base64 character 21&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode(Base64.java:566)&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode(Base64.java:589)&lt;br /&gt; at com.appiancorp.tomcat.encoding.EncodingCryptographer.decodePassword(EncodingCryptographer.java:25)&lt;br /&gt; at com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory.getObjectInstance(EncodedPasswordDataSourceFactory.java:44)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Additionally, the following field is set within the Appian CR:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/pre&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The Appian CR is configured to use the&amp;nbsp;&lt;code&gt;com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt; factory for the primary data source, which expects a password that has been encoded using Appian&amp;#39;s configure script. However, the password specified (which may be contained within a secret or specified within the CR) is not encoded. As a result, the &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span style="font-family:inherit;"&gt;pod is not able to authenticate with the primary data source using the specified password.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Edit the Appian CR as so that &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp&lt;/span&gt; expects a non-encoded password by changing the factory to &lt;code&gt;org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/code&gt;. This is the default factory for Appian on Kubernetes:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to all versions of Appian on Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: August 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: database, infrastructure, Kubernetes&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to incorrect data source password factory</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/6</link><pubDate>Wed, 13 Aug 2025 19:29:53 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>pauline.delacruz</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 6 posted to Appian Knowledge Base by pauline.delacruz on 8/13/2025 7:29:53 PM&lt;br /&gt;
&lt;p&gt;The &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes (AoK), these credentials are often contained within a Kubernetes secret, but may also be specified in plaintext within the CR. &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;makes use of a data source factory in order to authenticate and create connections with the primary data source RDBMS.&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed using &lt;a href="https://docs.appian.com/suite/help/latest/k8s/migration-tool.html"&gt;Appian&amp;#39;s AoK migration tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span&gt;pod refuses to start, as it is waiting for the primary data source RDBMS to be healthy. The following error traces may be present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.PrimaryRdbmsHealthCheck - javax.naming.NamingException: Unexpected exception resolving reference with name [AppianDS] [Root exception is java.lang.IllegalArgumentException: Illegal base64 character 21]&lt;br /&gt;YYYY-MM-DD HH:MM:SS,mmm [wait-for-component] INFO com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Primary datasource RDBMS to be healthy...&lt;br /&gt;YYYY-MM-DD HH:MM:SS WARNING [wait-for-component] org.apache.naming.NamingContext.lookup Unexpected exception resolving reference with name [AppianDS]&lt;br /&gt; java.lang.IllegalArgumentException: Illegal base64 character 21&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode(Base64.java:566)&lt;br /&gt; at java.base/java.util.Base64$Decoder.decode(Base64.java:589)&lt;br /&gt; at com.appiancorp.tomcat.encoding.EncodingCryptographer.decodePassword(EncodingCryptographer.java:25)&lt;br /&gt; at com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory.getObjectInstance(EncodedPasswordDataSourceFactory.java:44)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;Additionally, the following field is set within the Appian CR:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/pre&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The Appian CR is configured to use the&amp;nbsp;&lt;code&gt;com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt; factory for the primary data source, which expects a password that has been encoded using Appian&amp;#39;s configure script. However, the password specified (which may be contained within a secret or specified within the CR) is not encoded. As a result, the &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span style="font-family:inherit;"&gt;pod is not able to authenticate with the primary data source using the specified password.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Edit the Appian CR as so that &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp&lt;/span&gt; expects a non-encoded password by changing the factory to &lt;code&gt;org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/code&gt;. This is the default factory for Appian on Kubernetes:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j256r4411"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This article applies to all versions of Appian on Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: August 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: database, infrastructure, Kubernetes&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to incorrect data source password factory</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/5</link><pubDate>Fri, 08 Aug 2025 16:16:32 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>dan.endean</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 5 posted to Appian Knowledge Base by dan.endean on 8/8/2025 4:16:32 PM&lt;br /&gt;
&lt;p&gt;The &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes, these credentials are often contained within a Kubernetes secret, but may also be specified in plaintext within the CR. &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;makes use of a data source factory in order to authenticate and create connections with the primary data source RDBMS.&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed using &lt;a href="https://docs.appian.com/suite/help/latest/k8s/migration-tool.html"&gt;Appian&amp;#39;s AoK migration tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span&gt;pod refuses to start, as it is waiting for the primary data source RDBMS to be healthy. The following error traces may be present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;2025-08-08 15:52:12,633 [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.PrimaryRdbmsHealthCheck - javax.naming.NamingException: Unexpected exception resolving reference with name [AppianDS] [Root exception is java.lang.IllegalArgumentException: Illegal base64 character 21]
2025-08-08 15:51:52,626 [wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Primary datasource RDBMS to be healthy...
2025-08-08 15:51:57 WARNING [wait-for-component] org.apache.naming.NamingContext.lookup Unexpected exception resolving reference with name [AppianDS]
        java.lang.IllegalArgumentException: Illegal base64 character 21
                at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:566)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:589)
                at com.appiancorp.tomcat.encoding.EncodingCryptographer.decodePassword(EncodingCryptographer.java:25)
                at com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory.getObjectInstance(EncodedPasswordDataSourceFactory.java:44)&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Additionally, the the following field is set within the Appian CR:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The Appian CR is configured to use the&amp;nbsp;&lt;code&gt;com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt; factory for the primary data source, which expects a password that has been encoded using Appian&amp;#39;s configure script. However, the password specified (which may be contained within a secret or specified within the CR) is not encoded. As a result, the &lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp &lt;/span&gt;&lt;span style="font-family:inherit;"&gt;pod is not able to authenticate with the primary data source using the specified password.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Edit the Appian CR as so that &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;webapp&lt;/span&gt; expects a non-encoded password by changing the factory to &lt;code&gt;org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/code&gt;. This is the default factory for Appian on Kubernetes:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j256r4411"&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This article applies to all versions of Appian on Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: August 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to invalid data source password</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/4</link><pubDate>Fri, 08 Aug 2025 16:14:54 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>dan.endean</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 4 posted to Appian Knowledge Base by dan.endean on 8/8/2025 4:14:54 PM&lt;br /&gt;
&lt;p&gt;The &lt;code&gt;webapp&lt;/code&gt; pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes, these credentials are often contained within a Kubernetes secret, but may also be specified in plaintext within the CR. &lt;code&gt;webapp&lt;/code&gt; makes use of a data source factory in order to authenticate and create connections with the primary data source RDBMS.&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the &lt;code&gt;webapp&lt;/code&gt; pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed using &lt;a href="https://docs.appian.com/suite/help/latest/k8s/migration-tool.html"&gt;Appian&amp;#39;s AoK migration tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The &lt;code&gt;webapp&lt;/code&gt; pod refuses to start, as it is waiting for the primary data source RDBMS to be healthy. The following error traces may be present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;2025-08-08 15:52:12,633 [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.PrimaryRdbmsHealthCheck - javax.naming.NamingException: Unexpected exception resolving reference with name [AppianDS] [Root exception is java.lang.IllegalArgumentException: Illegal base64 character 21]
2025-08-08 15:51:52,626 [wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Primary datasource RDBMS to be healthy...
2025-08-08 15:51:57 WARNING [wait-for-component] org.apache.naming.NamingContext.lookup Unexpected exception resolving reference with name [AppianDS]
        java.lang.IllegalArgumentException: Illegal base64 character 21
                at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:566)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:589)
                at com.appiancorp.tomcat.encoding.EncodingCryptographer.decodePassword(EncodingCryptographer.java:25)
                at com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory.getObjectInstance(EncodedPasswordDataSourceFactory.java:44)&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Additionally, the the following field is set within the Appian CR:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The Appian CR is configured to use the&amp;nbsp;&lt;code&gt;com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt; factory for the primary data source, which expects a password that has been encoded using Appian&amp;#39;s configure script. However, the password specified (which may be contained within a secret or specified within the CR) is not encoded. As a result, the &lt;code&gt;webapp&lt;/code&gt; pod is not able to authenticate with the primary data source using the specified password.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Edit the Appian CR as so that webapp expects a non-encoded password by changing the factory to &lt;code&gt;org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/code&gt;. This is the default factory for Appian on Kubernetes:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j256r4411"&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This article applies to all versions of Appian on Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: August 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to invalid data source password</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/3</link><pubDate>Fri, 08 Aug 2025 16:08:37 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>dan.endean</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 3 posted to Appian Knowledge Base by dan.endean on 8/8/2025 4:08:37 PM&lt;br /&gt;
&lt;p&gt;The webapp pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes, these credentials are often contained within a Kubernetes secret.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the webapp pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed using Appian&amp;#39;s AoK migration tool.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The webapp pod refuses to start, as it is waiting for the Primary datasource RDBMS to be healthy. The following error traces may be present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;2025-08-08 15:52:12,633 [wait-for-component] ERROR com.appiancorp.common.startup.healthcheck.PrimaryRdbmsHealthCheck - javax.naming.NamingException: Unexpected exception resolving reference with name [AppianDS] [Root exception is java.lang.IllegalArgumentException: Illegal base64 character 21]
2025-08-08 15:51:52,626 [wait-for-component] INFO  com.appiancorp.common.startup.WaitForStatefulComponents - Waiting for Appian component Primary datasource RDBMS to be healthy...
2025-08-08 15:51:57 WARNING [wait-for-component] org.apache.naming.NamingContext.lookup Unexpected exception resolving reference with name [AppianDS]
        java.lang.IllegalArgumentException: Illegal base64 character 21
                at java.base/java.util.Base64$Decoder.decode0(Base64.java:848)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:566)
                at java.base/java.util.Base64$Decoder.decode(Base64.java:589)
                at com.appiancorp.tomcat.encoding.EncodingCryptographer.decodePassword(EncodingCryptographer.java:25)
                at com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory.getObjectInstance(EncodedPasswordDataSourceFactory.java:44)&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Additionally, the the following field is set within the Appian CR:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The Appian CR is configured to use the&amp;nbsp;&lt;code&gt;com.appiancorp.tomcat.datasource.EncodedPasswordDataSourceFactory&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family:inherit;"&gt; factory for the primary data source, which expects a password that has been encoded using Appian&amp;#39;s configure script. However, the password specified (which may be contained within a secret or specified within the CR) is not encoded. As a result, the webapp pod is not able to authenticate with the primary data source using the specified password.&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Edit the Appian CR as so that webapp expects a non-encoded password. This is the default factory for Appian on Kubernetes:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;spec:
  webapp:
    dataSources:
      primary:
        factory: org.apache.tomcat.jdbc.pool.DataSourceFactory&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j256r4411"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1j232j3fo16"&gt;&lt;span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This article applies to all versions of Appian on Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: August 2025&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to invalid data source password</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/2</link><pubDate>Thu, 07 Aug 2025 20:23:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>dan.endean</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 2 posted to Appian Knowledge Base by dan.endean on 8/7/2025 8:23:17 PM&lt;br /&gt;
&lt;p&gt;The webapp pod requires properly configured data source credentials to be able to communicate with the RDBMS. In Appian on Kubernetes, these credentials are often contained within a Kubernetes secret.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Customers on Legacy Self-Managed Appian&amp;nbsp;(Windows or Linux) typically encode data source passwords using the configure script as &lt;a href="https://docs.appian.com/suite/help/latest/Configure_Script.html#encoding-passwords-for-use-in-data-source-configurations"&gt;recommended in documentation&lt;/a&gt;, however the default data source factory for AoK does not expect an encoded password. This difference can sometimes prevent the webapp pod from coming up the first time the environment is configured, especially common for those customers who have migrated to AoK from Legacy Self-Managed.&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo13"&gt;&lt;span&gt;Symptoms&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The webapp pod refuses to start. The following error traces are present in the pod logs:&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo14"&gt;&lt;span&gt;Cause&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;This section is required for this template. When writing a cause for a particular article, ensure the following is taken into consideration:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;The cause is concise and does not disclose more information than absolutely necessary.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The cause does not share any Appian source code. Source code for plugins/shared components are fine.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;If this is an issue outside of the Appian product and the third-party vendor included documentation referencing the bug, provide their documentation for reference.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;For any enhancements/defects, use one of the following as applicable:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;This issue has been reported to the Appian Product Team. The reference number for this issue is&amp;nbsp;&lt;strong&gt;AN-XXXXX&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;This product use case has been logged to the Appian Product Team for consideration to add this functionality in the product. Kindly note it is not Appian Support&amp;rsquo;s policy to disclose how or when a product use case will be implemented.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;This issue has been hotfixed via&amp;nbsp;&lt;strong&gt;AN-XXXXX&lt;/strong&gt;&amp;nbsp;in Appian X.X.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;This issue has been hotfixed via&amp;nbsp;&lt;strong&gt;AN-XXXXX&amp;nbsp;&lt;/strong&gt;in Appian X.X to X.X.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;This use case has been incorporated in Appian X.X.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;This use case has been incorporated in Appian X.X&amp;nbsp;to X.X.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;When logging a product defect, ensure you use the&amp;nbsp;&lt;strong&gt;known issues&lt;/strong&gt;&amp;nbsp;tag as well as the&amp;nbsp;&lt;strong&gt;open issues&lt;/strong&gt;&amp;nbsp;or&amp;nbsp;&lt;strong&gt;fixed issues&lt;/strong&gt;&amp;nbsp;tag, depending if the issue is fixed or not.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If no cause is known and this is not something Engineering can reproduce/needs to know about, then say &amp;ldquo;The root cause of this issue is currently unknown.&amp;rdquo; If you use that as your cause, then a valid action&amp;nbsp;&lt;/span&gt;&lt;strong&gt;must&lt;/strong&gt;&lt;span&gt;&amp;nbsp;be present.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo15"&gt;&lt;span&gt;Action&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;This section is required for this template and contains the steps to resolve the issue. If an issue in an article is solved by a hotfix and/or major version of Appian, use the following language to indicate that:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Apply the latest hotfix to your Appian installation.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Upgrade to the latest version of Appian.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Apply the latest hotfix to your Appian installation or upgrade to the latest version of Appian.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;If there is a product issue with Engineering that is open and a workaround for that issue exists, include it in the Action section until the fix is available. After the fix is made available, use that as a workaround instead.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Otherwise, the content in this section should wholly solve a customer&amp;rsquo;s issue without producing any undesirable side effects. If there is at least one valid action that doesn&amp;rsquo;t cause undesirable side effects, all other actions with negative side effects should go in the Workaround section.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If there is no action or workaround that resolves the issue, use the following language:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;There is no action or workaround currently available for this issue. If you are facing this issue, please open a support case with Appian.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1j232j3fo16"&gt;&lt;span&gt;Workaround&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;This section is optional and should only be used as an alternative action if there is a massive technical debt associated with performing the action in the above section for customers (such as upgrading). It can also be used if there is a solution to the issue in the article but is more inconvenient to implement or it causes other undesirable behavior and wouldn&amp;rsquo;t warrant being an action.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1j232j3fo17"&gt;&lt;span&gt;Affected Versions&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;This section includes any relevant version information for Appian or other third/party configurations. Some examples of valid affected versions are as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This article applies to all versions of Appian.&lt;/li&gt;
&lt;li&gt;This article applies to all self-managed versions of Appian.&lt;/li&gt;
&lt;li&gt;This article applies to all versions of Appian Cloud.&lt;/li&gt;
&lt;li&gt;This article applies to Appian 7.11 and later.&lt;/li&gt;
&lt;li&gt;This article applies to Appian 16.2 and earlier.&lt;/li&gt;
&lt;li&gt;This article applies to Appian 7.11 and 16.1.&lt;/li&gt;
&lt;li&gt;This article applies to Appian 16.1, 16.2, and 16.3.&lt;/li&gt;
&lt;li&gt;This article applies to self-managed Appian 19.3 and earlier.&lt;/li&gt;
&lt;li&gt;This article applies to all versions of Appian from Appian 7.10 to Appian 16.2.&lt;/li&gt;
&lt;li&gt;This article applies to all versions of Appian using JBoss EAP 6.4.9 as an application server and Internet Explorer 9 as a web browser.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Last Reviewed: Month YYYY&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>[DRAFT] KB-XXXX Webapp pod fails to start due to invalid data source password</title><link>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory/revision/1</link><pubDate>Mon, 30 Jun 2025 19:37:50 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:26a75438-c07d-4ee5-b024-6da196046872</guid><dc:creator>dan.endean</dc:creator><comments>https://community.appian.com/support/w/kb/3688/kb-2353-webapp-pod-fails-to-start-due-to-incorrect-data-source-password-factory#comments</comments><description>Revision 1 posted to Appian Knowledge Base by dan.endean on 6/30/2025 7:37:50 PM&lt;br /&gt;
&lt;p&gt;Drafting...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>