<?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/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Best Practices - Recent Threads</title><link>https://community.appian.com/discussions/f/best-practices</link><description>Discuss best practices, methodology and implementation strategies</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/40402?ContentTypeID=0</link><pubDate>Tue, 05 May 2026 16:34:59 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:6c717034-4201-46d1-b783-00b06062b1e8</guid><dc:creator>udhay kumar</dc:creator><slash:comments>5</slash:comments><comments>https://community.appian.com/thread/40402?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40402/safely-removing-unused-columns-identified-via-dependency-checks-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:17px;"&gt;Hello all,&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:17px;"&gt;I have come across certain columns of different tables which are not being used in anyway. To validate&amp;nbsp; this, I have done the following :&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:17px;"&gt;Check for CDT dependencies Check for record type dependencies Search for usage of the field/column globally in the application &lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:17px;"&gt;Based on the above, it appears that these fields are not being referenced by anything.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:17px;"&gt;But prior to deleting the columns, I wanted to get your feedback regarding the following:&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:17px;"&gt;Does the above process ensure that the columns can be deleted without causing any issues ? Is there anything else that needs to be checked prior to deleting such columns (Process Models, integration etc.) ? What is the best way to delete such columns in Appian ? Am I supposed to deprecate these columns prior to their deletion ?&lt;/span&gt;&lt;br /&gt; &lt;!--/data/user/0/com.samsung.android.app.notes/files/clipdata/clipdata_bodytext_260505_183356_146.sdocx--&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:17px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:17px;"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>State in appian</title><link>https://community.appian.com/thread/40401?ContentTypeID=0</link><pubDate>Tue, 05 May 2026 12:13:01 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16c96084-32ed-4d17-a02a-91766f7e192d</guid><dc:creator>elvisb958752</dc:creator><slash:comments>6</slash:comments><comments>https://community.appian.com/thread/40401?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Is there any way in Appian to capture the previous state?&lt;br /&gt;I have a form with a couple of dop downs where the user selects different assignees for different tasks&lt;br /&gt;I want to able to send an email only to the changed users.&amp;nbsp;&lt;br /&gt;Is there any way to compare old user values with new ones to see if changes happen?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>pessimistic locking</title><link>https://community.appian.com/thread/40366?ContentTypeID=0</link><pubDate>Thu, 23 Apr 2026 12:07:30 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5d77ebcf-da1c-49d2-ac82-98e2318aa2ba</guid><dc:creator>MM</dc:creator><slash:comments>5</slash:comments><comments>https://community.appian.com/thread/40366?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;p&gt;I am considering implementing pessimistic locking in Appian.&lt;br /&gt; However, I have heard that pessimistic locking can potentially degrade performance because it restricts concurrency.&lt;/p&gt;
&lt;p&gt;In practice, how much impact does pessimistic locking typically have on performance?&lt;br /&gt; Also, from a best practice perspective in Appian, what kind of design or implementation approaches should be considered?&lt;/p&gt;
&lt;p&gt;Specifically, I would appreciate guidance on topics such as:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In which scenarios does pessimistic locking have a significant performance impact?&lt;/li&gt;
&lt;li&gt;When should pessimistic locking be used, and when should it be avoided?&lt;/li&gt;
&lt;li&gt;If pessimistic locking is required, are there any design techniques or best practices to minimize its performance impact?&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Nested CDT takes too long to query data</title><link>https://community.appian.com/thread/40335?ContentTypeID=0</link><pubDate>Tue, 14 Apr 2026 09:10:42 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:caff6bce-dfcb-434d-9504-b1829750a3f4</guid><dc:creator>Linh</dc:creator><slash:comments>3</slash:comments><comments>https://community.appian.com/thread/40335?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40335/nested-cdt-takes-too-long-to-query-data/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi everyone,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m having a multi layer nested CDT (Nested CDT that is a column in another nested CDT column of the main CDT that uses as data type) which is taking too long to query data and sometimes causes time out error. I would love to have some suggestion to optimise/ replace it with something else if possible.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>I’m working on a large and complex process where we do not use User Input Tasks. Instead, we implemented a pool-based approach, where each group has its own pool of requests.</title><link>https://community.appian.com/thread/40277?ContentTypeID=0</link><pubDate>Sat, 14 Mar 2026 18:31:24 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d147af1c-54da-4357-b735-c11b6aedfca6</guid><dc:creator>Omar Muthanna</dc:creator><slash:comments>3</slash:comments><comments>https://community.appian.com/thread/40277?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40277/i-m-working-on-a-large-and-complex-process-where-we-do-not-use-user-input-tasks-instead-we-implemented-a-pool-based-approach-where-each-group-has-its-own-pool-of-requests/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m working on a large and complex process where we are not using User Input Tasks. Instead, we implemented a &lt;strong&gt;pool-based approach&lt;/strong&gt;, where each group has its own pool of requests.&lt;/p&gt;
&lt;p&gt;All request data is stored in the &lt;strong&gt;database&lt;/strong&gt;. We also have an &lt;strong&gt;Admin Configuration&lt;/strong&gt; interface that allows the admin to enable or disable certain tasks for specific groups.&lt;/p&gt;
&lt;p&gt;For example, in the database we store a boolean flag:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;true&lt;/strong&gt; &amp;rarr; the request/task should appear in the pool&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;false&lt;/strong&gt; &amp;rarr; the request/task should no longer appear&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the interface side, we are using a &lt;strong&gt;grid&lt;/strong&gt; that queries the database and &lt;strong&gt;filters the tasks based on this flag&lt;/strong&gt; to display the pool for each group.&lt;/p&gt;
&lt;p&gt;The issue we are facing is the following:&lt;/p&gt;
&lt;p&gt;When the admin disables a task (changing the flag from &lt;strong&gt;true to false&lt;/strong&gt;), the request &lt;strong&gt;still appears in the pool grid&lt;/strong&gt;. It only disappears after performing a &lt;strong&gt;hard browser refresh&lt;/strong&gt;. The standard &lt;strong&gt;refresh mechanisms in the interface do not update the grid immediately&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My questions are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Is there a recommended way to &lt;strong&gt;force the grid/pool to refresh immediately&lt;/strong&gt; when the admin disables the task?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Are there any &lt;strong&gt;best practices for implementing pool-based task management&lt;/strong&gt; like this in Appian?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there a better architectural approach for handling this scenario?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Any suggestions or best practices would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>I want to create custom Hub for my 4 applications where user can create request, view the request, work on assigned tasks , how can i do , please suggest me the possible approach</title><link>https://community.appian.com/thread/40189?ContentTypeID=0</link><pubDate>Fri, 13 Feb 2026 07:52:19 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3381befc-3bb9-4b05-9fd5-e9d172c33a05</guid><dc:creator>vedantd425564</dc:creator><slash:comments>8</slash:comments><comments>https://community.appian.com/thread/40189?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40189/i-want-to-create-custom-hub-for-my-4-applications-where-user-can-create-request-view-the-request-work-on-assigned-tasks-how-can-i-do-please-suggest-me-the-possible-approach/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;I want to create custom Hub for my 4 applications where user can create request, view the request, work on assigned tasks , how can i do , please suggest me the possible approach&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Email handling as apps grow – how are you structuring it?</title><link>https://community.appian.com/thread/40173?ContentTypeID=0</link><pubDate>Mon, 09 Feb 2026 04:14:49 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:45c54c3b-5a40-45f1-8e6a-e5ba061848a8</guid><dc:creator>Arunkumar Arumugam</dc:creator><slash:comments>4</slash:comments><comments>https://community.appian.com/thread/40173?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40173/email-handling-as-apps-grow-how-are-you-structuring-it/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="202" data-end="331"&gt;In one of our production apps, we currently send emails directly from the main process models using the Send Email smart service.&lt;/p&gt;
&lt;p data-start="333" data-end="428"&gt;As volume is increasing, we&amp;rsquo;re starting to rethink whether this is the best long-term approach.&lt;/p&gt;
&lt;p data-start="430" data-end="640"&gt;For those who&amp;rsquo;ve worked on larger implementations &amp;mdash; do you keep email logic in the main process, or move it to a reusable subprocess? Also curious how you&amp;rsquo;re handling retries and basic monitoring in production.&lt;/p&gt;
&lt;p data-start="642" data-end="698"&gt;Just trying to sense-check our design as the app scales.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Just wondering if anybody using lightspeed DEVOPS CI/CD pipeline with Appian</title><link>https://community.appian.com/thread/40165?ContentTypeID=0</link><pubDate>Thu, 05 Feb 2026 16:57:19 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:9b90dded-04f9-42d6-b0fb-5f62bc3c9f71</guid><dc:creator>pramodk0005</dc:creator><slash:comments>6</slash:comments><comments>https://community.appian.com/thread/40165?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40165/just-wondering-if-anybody-using-lightspeed-devops-ci-cd-pipeline-with-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi everyone,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m curious to know if anybody using Lightspeed Devops CI/CD pipeline with Appian.&lt;/p&gt;
&lt;p&gt;if so what&amp;#39;s your take on it.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to optimize Multiple integration calls in one process model</title><link>https://community.appian.com/thread/40033?ContentTypeID=0</link><pubDate>Wed, 17 Dec 2025 13:45:58 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8fdf886e-cf99-4d62-b5ed-be718d694801</guid><dc:creator>sureshs276515</dc:creator><slash:comments>6</slash:comments><comments>https://community.appian.com/thread/40033?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40033/how-to-optimize-multiple-integration-calls-in-one-process-model/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi ,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;have 6 integrations in the process model flow , it should be run in sequence manner and each integration is depending on previous integration call, now i have to complete the process model within 5 see , could you please let me best approach to follow ?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Which option should I choose for a new application: Data Store, Process Data Persistence (PDP), Record Sync (RS), or Database-backed Record Types?</title><link>https://community.appian.com/thread/40012?ContentTypeID=0</link><pubDate>Wed, 10 Dec 2025 07:20:26 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d79a80ea-8e53-4311-b4ec-2ff0d4260b74</guid><dc:creator>iswaryan3520</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/40012?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40012/which-option-should-i-choose-for-a-new-application-data-store-process-data-persistence-pdp-record-sync-rs-or-database-backed-record-types/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m starting a new application in Appian and I want to choose the right approach for storing and managing data. Should I go for&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Data Store (CDT + Data Store mappings) from there creating record type&lt;/p&gt;
&lt;p&gt;or&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Directly use the Record Type backed by a database table&lt;/p&gt;
&lt;p&gt;What&amp;#39;s the purpose of data store generally? I meant by for the modern Appian developement do we need data store necessarily&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Since this is a new build, I want to follow best practices and avoid making architectural mistakes early.&lt;/p&gt;
&lt;p&gt;My Question&lt;/p&gt;
&lt;p&gt;For a fresh application, what is the recommended approach for:&lt;/p&gt;
&lt;p&gt;Application/master/transactional data&lt;/p&gt;
&lt;p&gt;CRUD operations&lt;/p&gt;
&lt;p&gt;Reporting and relationships&lt;/p&gt;
&lt;p&gt;Security and scalability&lt;/p&gt;
&lt;p&gt;Long-term maintainability&lt;/p&gt;
&lt;p&gt;Should I rely on Data Store, PDP, Record Sync, or directly use a Database-backed Record Type?&lt;/p&gt;
&lt;p&gt;If you have any guidelines, comparison points, or real-world experience on which option is better in 2025 Appian architecture, please share your insights. Notes :&amp;nbsp; Appian version is 24.2 .&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>which tool is better to use for testing with appian application</title><link>https://community.appian.com/thread/39938?ContentTypeID=0</link><pubDate>Tue, 18 Nov 2025 10:12:05 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:09312d70-d9ae-459b-86fb-f377caad1e84</guid><dc:creator>sureshs276515</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/39938?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39938/which-tool-is-better-to-use-for-testing-with-appian-application/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Team,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;which tool is better to use for testing with appian application for automation testing?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Appian Direct Deploy Rollback - Best Practices</title><link>https://community.appian.com/thread/39855?ContentTypeID=0</link><pubDate>Fri, 17 Oct 2025 13:24:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:55440aa3-ce80-4e3e-a177-daea921005c5</guid><dc:creator>maximoferarenas</dc:creator><slash:comments>11</slash:comments><comments>https://community.appian.com/thread/39855?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39855/appian-direct-deploy-rollback---best-practices/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi. We need more precise information regarding advice and best practices for doing a rollback / reverting a direct deploy. We intend to do a big deploy which restructures a lot of tables, processes, rule expressions and interfaces. We want to have a rollback plan if anything goes wrong, but i dont find any option in the deploy panel for rollbacks or reverts.&lt;br /&gt;&lt;br /&gt;any info is welcomed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is Appian Case Management a framework or just a coding style?</title><link>https://community.appian.com/thread/39853?ContentTypeID=0</link><pubDate>Fri, 17 Oct 2025 11:14:52 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:421c7ef7-69f9-4d17-8ede-42d240c9a901</guid><dc:creator>ahmadb3492</dc:creator><slash:comments>9</slash:comments><comments>https://community.appian.com/thread/39853?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39853/is-appian-case-management-a-framework-or-just-a-coding-style/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-family:inherit;"&gt;Hello Appian Community,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;I&amp;rsquo;m exploring Appian Case Management and came across some implementations described as &amp;ldquo;case management style.&amp;rdquo; However, when researching, I see references to Appian Case Management as a native framework.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Observations from typical implementations:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Short-lived processes triggered on UI submission&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Routing logic partly handled via staric Match() expressions&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;State stored in database tables&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Audit/history maintained manually in tables&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;My questions:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;1. In Appian, is Case Management a native framework that you configure, or is it just a coding style/pattern?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;2. How can we objectively distinguish a true case management implementation from a hybrid or DB-driven workflow that only simulates case management?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;3. Are there official Appian guidelines or best practices confirming this?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Thank you for your guidance!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Logging Interface Access</title><link>https://community.appian.com/thread/39838?ContentTypeID=0</link><pubDate>Mon, 13 Oct 2025 08:48:26 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:786a0a42-833f-4ed9-b324-f983fbd4ba8d</guid><dc:creator>Keizo Watsuji</dc:creator><slash:comments>20</slash:comments><comments>https://community.appian.com/thread/39838?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39838/logging-interface-access/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I hope this message finds you well.&lt;/p&gt;
&lt;p&gt;I would like to log the event of an interface being opened. &lt;br /&gt;However, my understanding is that on the interface itself, unless an action such as clicking a button occurs,&lt;/p&gt;
&lt;p&gt;it is not possible to write a record or start a process model.&lt;/p&gt;
&lt;p&gt;When consulting ChatGPT, I received the following idea:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a Web API on Appian that returns an image as the response and simultaneously saves a log.&lt;/li&gt;
&lt;li&gt;Place an image on the target interface and set the endpoint of the Web API created in (1) as the image source.&lt;/li&gt;
&lt;li&gt;As a result, when the interface is opened, the Web API in (1) is called, and the log is recorded.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;However, it seems that the function a!writeToDataStoreEntity does not get triggered inside the Web API.&lt;/p&gt;
&lt;p&gt;I have two questions and would appreciate your advice:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What should I review to implement the above ChatGPT idea successfully?&lt;/li&gt;
&lt;li&gt;Are there alternative methods to log when an interface is opened?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thank you in advance for your kind advice.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>DataSubset &amp; Rule Reference Question</title><link>https://community.appian.com/thread/39784?ContentTypeID=0</link><pubDate>Fri, 26 Sep 2025 11:18:31 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:88123355-f34a-4454-9d2a-1dcf43543fbe</guid><dc:creator>GautamShenoy</dc:creator><slash:comments>4</slash:comments><comments>https://community.appian.com/thread/39784?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39784/datasubset-rule-reference-question/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Team,&lt;/p&gt;
&lt;p&gt;I had 2 simple questions which I wanted to post here. Please help me if anyone has the answers :&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You are given a list of CDT / Dictionary / Map with a few fields, eg :&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="json"&gt;{ { key: 12, val: &amp;quot;ABC&amp;quot; }, { key: 20, val: &amp;quot;DEF&amp;quot; }, { key: 30, val: &amp;quot;GHI&amp;quot; } }&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem statement :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Get those CDTs which have key bw 10 &amp;amp; 25&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My approaches :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I had 2 approaches, both of which I have a roadblock&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I convert this to list to a data subset using toDataSubset function and then filter on this&lt;/li&gt;
&lt;li&gt;I create a rule which takes this `key` as an RI and then returns true / false based on condition. I will use this&amp;nbsp;rule in the filter function and use wherecontains to filter out which matches our condition&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Questions :&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now for the approach 1, I had a question : how do I filter this custom data subset ? because I only see queryEntity and queryRecord but nothing to query this custom dataset&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For approach 2 : is there a way we can eliminate the need of creating a different rule in the env and somehow use some function .. is it possible to create local functions in appian ? something like :&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!a:  (var){
    
  }
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Choosing Between Appian’s Built-In Human Tasks vs Custom Task List Database</title><link>https://community.appian.com/thread/39745?ContentTypeID=0</link><pubDate>Thu, 18 Sep 2025 09:52:03 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:67a5fbd6-38ba-4be5-bda8-0f37a1261f4d</guid><dc:creator>ahmadb803565</dc:creator><slash:comments>11</slash:comments><comments>https://community.appian.com/thread/39745?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39745/choosing-between-appian-s-built-in-human-tasks-vs-custom-task-list-database/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;Hi Appian Team and Community,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We&amp;rsquo;re designing a generic, audit-compliant task module to support multiple business processes&amp;mdash;KYC, retail and corporate loan origination, ESG, and more. Before finalizing our architecture, I&amp;rsquo;m weighing two approaches for task management:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Option 1: Appian&amp;rsquo;s Built-In Human Tasks via Process Models&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;Uses process reports and task assignment rules&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;Tasks are tied to process instances&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;UI and SLA logic driven by Appian&amp;rsquo;s native task engine&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Option 2: Custom Task List Database&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;We build our own &lt;code&gt;TASK_GROUP&lt;/code&gt; and &lt;code&gt;TASK&lt;/code&gt; tables&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;Tasks are instantiated based on business rules and metadata&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;UI, counters, and SLA logic are fully controlled via record types and expressions&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h3&gt;My Questions:&lt;/h3&gt;
&lt;ol start="1"&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;If we rely on Appian&amp;rsquo;s built-in human tasks&lt;/strong&gt;, what happens if the process instance is deleted or archived? &amp;ndash; Can we still access task metadata (status, assignee, timestamps) via process reports or APIs?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;What are the trade-offs&lt;/strong&gt; between using Appian&amp;rsquo;s native task engine vs a custom task registry? &amp;ndash; Especially in terms of auditability, lifecycle control, and cross-process reuse&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Is it common practice&lt;/strong&gt; in enterprise-grade implementations to build a custom task pool for traceability and reporting? &amp;ndash; Or do most teams rely on Appian&amp;rsquo;s built-in task management?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;For context: our vendor recommended the database-driven approach, citing limitations in Appian&amp;rsquo;s native task handling&amp;mdash;particularly around long-term traceability, cross-process reuse, and lifecycle control once processes are deleted. That inspired us to explore a fully generic task registry that can support dynamic instantiation and stage-based progression across domains.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We&amp;rsquo;re aiming for a scalable, future-proof design that supports dynamic task instantiation based on business rules, stage-based progression, and full audit history. I&amp;rsquo;d love to hear how others have approached this, and what Appian recommends for long-term maintainability.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks in advance!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks in advance!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>error converting typed value TypedValue</title><link>https://community.appian.com/thread/39724?ContentTypeID=0</link><pubDate>Mon, 15 Sep 2025 16:10:29 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:9d3fbf07-98b2-4796-a2e9-420d3ac40137</guid><dc:creator>sireesha</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39724?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39724/error-converting-typed-value-typedvalue/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Everyone,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am getting below error could you please let me know if you have any idea on this error&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;error converting typed value TypedValue[it=1134,v={4cef5fb4-6aa9-499c-99e1-34fbb0d20616@6291,{TypedValue[it=5246,v={335,C-2025-0335,,,Efficacy and safety of liposomal amphotericin B(AmBisome&amp;reg; ) versus Isavuconazole in patients with invasive Aspergillosis in liver transplant recipients ,,,CRDRF,DRF,&amp;lt;null&amp;gt;,,jiaqi wei,2025-09-13,&amp;lt;null&amp;gt;,110000.0,0,,0,,&amp;lt;null&amp;gt;,1,15144486065@163.com,2025-09-13 01:56:30.0,&amp;lt;null&amp;gt;,15144486065@163.com,2025-09-13 02:28:22.48,,1,Shawn.xiao,,0,}]}}] to XML in order to convert it to java type com.appiancorp.common.EntityData&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Appian Smart Search capability</title><link>https://community.appian.com/thread/39702?ContentTypeID=0</link><pubDate>Thu, 11 Sep 2025 04:27:59 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:4a2e8033-ac58-4799-ade4-39a624031755</guid><dc:creator>sanjuktab2257</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/39702?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39702/appian-smart-search-capability/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;We have created an &lt;strong&gt;Expression Rule&lt;/strong&gt; named abc, where data is fetched from a &lt;strong&gt;Record Type&lt;/strong&gt; with &lt;strong&gt;Smart Search enabled&lt;/strong&gt;. The results are sorted in &lt;strong&gt;descending order of similarity score&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Smart Search is enabled on the &lt;strong&gt;Full Name&lt;/strong&gt; and &lt;strong&gt;Address&lt;/strong&gt; fields. For example, the address field contains values like &amp;quot;St.&amp;quot;, and we expect that when a user searches for &amp;quot;Street&amp;quot;, addresses containing &amp;quot;St.&amp;quot; should receive the &lt;strong&gt;highest similarity scores&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;However, we are observing unexpected behavior. For instance, the address &amp;quot;1817 W Broadway Columbia MO 65218&amp;quot; sometimes receives a &lt;strong&gt;higher similarity score&lt;/strong&gt; than addresses that explicitly contain &amp;quot;St.&amp;quot;.&lt;/p&gt;
&lt;p&gt;Additionally, we would like to understand how Smart Search handles &lt;strong&gt;nickname matching&lt;/strong&gt;&amp;mdash;for example, whether a search for &amp;quot;Leo&amp;quot; would return results like &amp;quot;Leonardo&amp;quot; with a high similarity score.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Request&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Could you please help us understand how &lt;strong&gt;similarity scores are calculated&lt;/strong&gt; in Smart Search?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there documentation or guidance on how &lt;strong&gt;abbreviations&lt;/strong&gt; (e.g., &amp;quot;St.&amp;quot; vs &amp;quot;Street&amp;quot;) and &lt;strong&gt;nicknames&lt;/strong&gt; are handled?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Are there any &lt;strong&gt;best practices&lt;/strong&gt; or &lt;strong&gt;configuration tips&lt;/strong&gt; to improve the accuracy of semantic matching in such cases?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Any updates on JMeter for Appian?</title><link>https://community.appian.com/thread/39682?ContentTypeID=0</link><pubDate>Mon, 08 Sep 2025 15:25:09 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:ab3d3ae5-f8ba-4730-bd3f-5a6218b57e96</guid><dc:creator>Evan</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/39682?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39682/any-updates-on-jmeter-for-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;According to&amp;nbsp;&amp;nbsp;&lt;a href="https://community.appian.com/success/w/guide/3325/leverage-jmeter-in-appian-load-testing"&gt;Leverage JMeter in Appian Load Testing,&lt;/a&gt;&amp;nbsp;this plug-in&amp;nbsp;&amp;nbsp;&lt;a href="https://community.appian.com/b/appmarket/posts/jmeter-for-appian"&gt;JMeter for Appian&lt;/a&gt;&amp;nbsp;is needed for, or at least greatly streamlines, performance testing in Appian. The app is now unavailable, and a comment on the plug-in page notes that it is out of date. Is this plug-in permanently out of support, and consequently, is that a showstopper for using JMeter in Appian Load Testing? What is the latest guidance?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>I need a right answer for this question.</title><link>https://community.appian.com/thread/39659?ContentTypeID=0</link><pubDate>Fri, 29 Aug 2025 09:49:10 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:daed52b1-dce7-40a5-90b9-e43df77a5785</guid><dc:creator>aftabs332977</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39659?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39659/i-need-a-right-answer-for-this-question/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;Q. There are 2 record types, ABC and XYZ, which sync enabled. The XYZ record type is added as a relationship into the ABC record type. A user has Viewer permission to the ABC record type but does not have access to the XYZ record type. A site page is represented to the user where the data is sourced from the ABC record type and its related record type the XYZ reference. What information does the user see on the site page?&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-weight:400;"&gt; Page is presented to the user and the data reference to the XYZ record type appear as &amp;ldquo;null&amp;rdquo;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight:400;"&gt; Page is presented to the user with the XYZ record type data and field references redacted.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight:400;"&gt; Page does not load, and an error message is presented: &amp;ldquo;The record type [identifier=XYZ] does not exist, has been deleted, or you do not have sufficient privileges to access the data.&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Send Email Smart service issue - Health Check Report</title><link>https://community.appian.com/thread/39632?ContentTypeID=0</link><pubDate>Fri, 22 Aug 2025 12:17:27 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:7c2ea8a0-108d-426e-bed3-80a8dfc3a7fd</guid><dc:creator>prathipatir576008</dc:creator><slash:comments>4</slash:comments><comments>https://community.appian.com/thread/39632?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39632/send-email-smart-service-issue---health-check-report/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Community,&lt;/p&gt;
&lt;p&gt;In our current implementation, we&amp;#39;re using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Send E-Mail&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;smart service in a few process models. However, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Appian Health Check report&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;flagged this with the following message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;&lt;strong&gt;Send E-Mails&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;references a smart service that is no longer recommended for use (Send E-Mail). Please remap this node in the process model to use the latest version.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Could someone guide us on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What the recommended replacement is for the deprecated&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Send E-Mail&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;smart service?&lt;/li&gt;
&lt;li&gt;Any best practices or migration steps we should follow while updating our process models?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>What is the most effective way to implement version control for an Appian application deployed across multiple environments?</title><link>https://community.appian.com/thread/39603?ContentTypeID=0</link><pubDate>Tue, 12 Aug 2025 13:29:16 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:4ec82cf7-faba-4f61-af69-75e3f921a0ee</guid><dc:creator>sanjuktab2257</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39603?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39603/what-is-the-most-effective-way-to-implement-version-control-for-an-appian-application-deployed-across-multiple-environments/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;Initially, I considered using deployment packages to track changes. However, I noticed that once changes are pushed from UAT to Production, the environments become synchronized.&amp;nbsp;As a result, a&lt;/span&gt;ll objects appeared in the deployment package; however, the ones that were initially modified before being pushed to Production are no longer listed as &amp;#39;modified.&amp;#39; This makes it difficult to track the specific changes made during that deployment.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;I&amp;#39;m looking for a reliable approach to maintain visibility into code changes with each deployment. Has anyone found a good solution or best practice for this scenario?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Database Design vs. JSON Blueprint – Best Practice for Centralized Document Handling Across Bank Processes</title><link>https://community.appian.com/thread/39453?ContentTypeID=0</link><pubDate>Tue, 15 Jul 2025 06:57:51 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:ebf07c5f-e1b1-4639-a1b9-347042137b80</guid><dc:creator>ahmadb803565</dc:creator><slash:comments>9</slash:comments><comments>https://community.appian.com/thread/39453?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39453/database-design-vs-json-blueprint-best-practice-for-centralized-document-handling-across-bank-processes/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:150%;"&gt;Hi everyone, We&amp;rsquo;re currently in the design phase of a large-scale Appian BPM implementation for a bank. Appian acts as the backend processor for multiple business domains &amp;mdash; including Loan Origination, KYC, and more &amp;mdash; with all front-end channels (like CRM) integrating via Kafka events.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;To give context, here&amp;rsquo;s a simplified version of the incoming JSON payload from CRM to our Appian BPM:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Our Design Question We&amp;rsquo;re wondering whether our database design should mirror this JSON structure, or whether we should use a normalized model that separates document references into a central table. To scope the question further: We&amp;rsquo;re using a DMS (Document Management System), and every attachment UUID points to a file stored there. Documents can belong to any entity (Applicant, Collateral, Product Info, etc.), and multiple documents can be associated with each entity. Processes vary, and different document types may be required at various stages (requested from the CRM during the ongoing process).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Our Questions to the Community&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;1. In your Appian projects, do you follow the incoming JSON structure when designing your database schema &amp;mdash; or do you normalize? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;2. Do you recommend a centralized DOCUMENT_LOG model for document storage across multiple processes/entities? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;3. How do you manage document associations when IDs (e.g., applicant_id) are only available after insert and we insert them at once?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;We appreciate any insights or architectural lessons from large-scale Appian use cases!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;meta&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;process&amp;quot;: &amp;quot;Retail.Murabaha.CarLoan.CreditReview&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;eventType&amp;quot;: &amp;quot;START_CREDIT_REVIEW&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;source&amp;quot;: &amp;quot;CRM&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;destination&amp;quot;: &amp;quot;BPM&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;isSynchronously&amp;quot;: false,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;isAcknowledgment&amp;quot;: true,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;correlationId&amp;quot;: &amp;quot;abc12345-0000-1111-2222-1234567890ab&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;transactionId&amp;quot;: &amp;quot;def67890-0000-2222-3333-0987654321ba&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;submittedBy&amp;quot;: 1936,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;timestamp&amp;quot;: &amp;quot;2024-10-31T10:15:30Z&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;data&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;application&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;branchCode&amp;quot;: &amp;quot;1010&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;submissionDate&amp;quot;: &amp;quot;2024-10-31T10:15:30Z&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;requestedAmount&amp;quot;: 10000.0,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;currency&amp;quot;: &amp;quot;JOD&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;tenorMonths&amp;quot;: 60,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;gracePeriodMonths&amp;quot;: 0,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;annualProfitRate&amp;quot;: 5.5,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;dbr&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;standardRatio&amp;quot;: 40,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;excludingStandingLoans&amp;quot;: 40,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;includingPendingRequests&amp;quot;: 40,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;withJoalaVisa&amp;quot;: 40,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;guarantorDebtor&amp;quot;: 40,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;overIndebtedness&amp;quot;: 40&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;productInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;fuelType&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;carStatus&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;newCarOwnerName&amp;quot;: &amp;quot;Sara Mahmoud&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;relationshipType&amp;quot;: &amp;quot;None&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;carBrand&amp;quot;: &amp;quot;Toyota&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;carType&amp;quot;: &amp;quot;Sedan&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;productionYear&amp;quot;: 2022,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;chassisNumber&amp;quot;: &amp;quot;ABC123456XYZ&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;insuranceType&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;expiryOfLicense&amp;quot;: &amp;quot;2025-12-31&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;extraComments&amp;quot;: &amp;quot;No remarks&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;totalPrice&amp;quot;: 35000.000,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;greenFinancing&amp;quot;: true,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;typeOfGreenFinancing&amp;quot;: &amp;quot;text&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;expectedOwners&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;excpectedCarOwnerName&amp;quot;: &amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;currentOwners&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;ownershipIdentityNumber&amp;quot;: &amp;quot;&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;currentOwnerName&amp;quot;: &amp;quot;Mohammad Ali&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;currentOwnerStatus&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;isCurrentOwnerGuarantor&amp;quot;: false,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;safewatch&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;existInSafewatchList&amp;quot;: true,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;complianceDecision&amp;quot;: &amp;quot;CSS007&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;notes&amp;quot;: &amp;quot;&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;safewatch&amp;quot;: &amp;quot;1e0a2ee5-9284-4380-ac6b-0548c817fd74&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;compliance&amp;quot;: &amp;quot;32378b57-3873-48f5-9859-2f27476fd73f&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;vehicleOwnershipProof&amp;quot;: &amp;quot;42378b57-3873-48f5-9859-2f27476fd73f&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;carLicenseAttachment&amp;quot;: &amp;quot;ff135649-ddae-4f7f-acc7-4720e2c16aa7&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collaterals&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;suggested&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralNumber&amp;quot;: 123456,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralAmount&amp;quot;: 456.000,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralExpiryDate&amp;quot;: &amp;quot;2020-01-15&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;conditionDetails&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;Recommendations&amp;quot;: &amp;quot;comments&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralType&amp;quot;: 23,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralTypeDesc&amp;quot;: &amp;quot;Salary Tranfers&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralLongName&amp;quot;: &amp;quot;0&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralBriefName&amp;quot;: &amp;quot;راتب&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralAttachment&amp;quot;: &amp;quot;6d89e0f2-c03f-4d99-a983-6335f6632729&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;recommended&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralNumber&amp;quot;: 123456,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralAmount&amp;quot;: 456.000,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralExpiryDate&amp;quot;: &amp;quot;2020-01-15&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;conditionDetails&amp;quot;: &amp;quot;1&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;Recommendations&amp;quot;: &amp;quot;comments&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralType&amp;quot;: 23,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralTypeDesc&amp;quot;: &amp;quot;Salary Tranfers&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralLongName&amp;quot;: &amp;quot;0&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralBriefName&amp;quot;: &amp;quot;راتب&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralAttachment&amp;quot;: &amp;quot;6d89e0f2-c03f-4d99-a983-6335f6632729&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;applicants&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;cif&amp;quot;: 48001082,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;personalInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;fullNameEnglish&amp;quot;: &amp;quot;Mohamed Ahmed Ali&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;cbjConsent&amp;quot;: &amp;quot;0c6f7cfd-87c0-4bb3-bf9c-ed76adc97e8f&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;crifConsent&amp;quot;: &amp;quot;1bbefd21-f07f-4e97-99b5-9a27a7761335&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;cspdConsent&amp;quot;: &amp;quot;1c5badcc-de50-4c97-9b82-4911addaca71&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;identityInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;idNumber&amp;quot;: &amp;quot;123456789&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;idCopy&amp;quot;: &amp;quot;5a919a5d-3a43-4b49-81fb-b8af9e4fc850&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;contactInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;addressEnglish&amp;quot;: &amp;quot;Amman, Queen Rania Street&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;mobileNumber&amp;quot;: &amp;quot;123456789&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;workInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;employerClassification&amp;quot;: &amp;quot;2&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;employerName&amp;quot;: &amp;quot;Tech Corp&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;financialInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;salaryAmount&amp;quot;: 500.000,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;salaryDetails&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;monthYear&amp;quot;: &amp;quot;01-2023&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;amount&amp;quot;: 500.000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;monthYear&amp;quot;: &amp;quot;02-2023&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;amount&amp;quot;: 500.000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;salaryCertificates&amp;quot;: &amp;quot;5a919a5d-3a43-4b49-81fb-b8af9e4fc850&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;socialSecurityStatement&amp;quot;: &amp;quot;0c6f7cfd-87c0-4bb3-bf9c-ed76adc97e8f&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;soa6Month&amp;quot;: &amp;quot;1bbefd21-f07f-4e97-99b5-9a27a7761335&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;clearanceDetails&amp;quot;: &amp;quot;1c5badcc-de50-4c97-9b82-4911addaca71&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;standingLoans&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;loanType&amp;quot;: &amp;quot;Personal&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collaterals&amp;quot;: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;collateralAmount&amp;quot;: 456.000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;insuranceInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;hasDiseases&amp;quot;: false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;crifInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;creditCardOutstanding&amp;quot;: 5000.000,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;dbr&amp;quot;: 0.3,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;creditRiskLevel&amp;quot;: &amp;quot;Low&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;clearanceInfo&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;name&amp;quot;: &amp;quot;أحمد خالد سعيفان&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;safewatch&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;existInSafewatchList&amp;quot;: true,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;complianceDecision&amp;quot;: &amp;quot;CSS007&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;notes&amp;quot;: &amp;quot;&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;attachments&amp;quot;: {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;safewatch&amp;quot;: &amp;quot;68661ab6-2573-4288-9a66-6a8f9e63454f&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;compliance&amp;quot;: &amp;quot;cc73516f-eff6-4713-8202-d0b2e5ddfa09&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; ],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;delegators&amp;quot;: [//same as applicant json structure],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; &amp;quot;guarantors&amp;quot;: [&lt;span&gt;//same as applicant json structure&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How Should We Handle Documents in Enterprise BPM with Appian + DMS?</title><link>https://community.appian.com/thread/39436?ContentTypeID=0</link><pubDate>Sun, 13 Jul 2025 19:47:10 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:db3bb08a-3a2e-4e2b-9be0-3b4cf66a748a</guid><dc:creator>ahmadb3492</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39436?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39436/how-should-we-handle-documents-in-enterprise-bpm-with-appian-dms/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="330" data-end="344"&gt;&lt;span style="font-size:inherit;"&gt;Hi everyone,&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="351" data-end="629"&gt;&lt;span style="font-size:inherit;"&gt;We&amp;rsquo;re building a large BPM platform in Appian for a bank. It handles multiple core processes like &lt;strong data-start="449" data-end="469"&gt;Loan Origination&lt;/strong&gt;, &lt;strong data-start="471" data-end="478"&gt;KYC&lt;/strong&gt;, and other services. We&amp;rsquo;re also integrating with both &lt;strong data-start="533" data-end="540"&gt;CRM&lt;/strong&gt; and a &lt;strong data-start="547" data-end="583"&gt;Document Management System (DMS)&lt;/strong&gt; &amp;mdash; so document handling is a key topic for us.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-start="634" data-end="650"&gt;&lt;span style="font-size:inherit;"&gt;Our Setup&lt;/span&gt;&lt;/h3&gt;
&lt;ul data-start="653" data-end="1077"&gt;
&lt;li data-start="653" data-end="717"&gt;
&lt;p data-start="655" data-end="717"&gt;&lt;span style="font-size:inherit;"&gt;CRM sends us structured application data via &lt;strong data-start="700" data-end="709"&gt;Kafka&lt;/strong&gt; events.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="720" data-end="831"&gt;
&lt;p data-start="722" data-end="831"&gt;&lt;span style="font-size:inherit;"&gt;We use a central table called &lt;code data-start="752" data-end="772"&gt;BPM_PROCESS_MASTER&lt;/code&gt; to track each case (with caseId, correlationId, processKey, etc.).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="834" data-end="1077"&gt;
&lt;p data-start="836" data-end="915"&gt;&lt;span style="font-size:inherit;"&gt;We built a shared table &lt;code data-start="860" data-end="878"&gt;BPM_DOCUMENT_LOG&lt;/code&gt; to store documents with fields like:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-start="920" data-end="1077"&gt;
&lt;li data-start="920" data-end="962"&gt;
&lt;p data-start="922" data-end="962"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="922" data-end="933"&gt;processId&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="920" data-end="962"&gt;
&lt;p data-start="922" data-end="962"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="935" data-end="947"&gt;entityType&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="920" data-end="962"&gt;
&lt;p data-start="922" data-end="962"&gt;&lt;span style="font-size:inherit;"&gt; &lt;code data-start="949" data-end="962"&gt;entityRefId&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="967" data-end="983"&gt;
&lt;p data-start="969" data-end="983"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="969" data-end="983"&gt;documentType&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="988" data-end="1030"&gt;
&lt;p data-start="990" data-end="1030"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="990" data-end="1003"&gt;AppianDocId&lt;/code&gt; (if it&amp;rsquo;s stored in Appian)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1035" data-end="1075"&gt;
&lt;p data-start="1037" data-end="1075"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="1037" data-end="1047"&gt;DMS_UUID&lt;/code&gt; (if it&amp;rsquo;s stored in our DMS)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1080" data-end="1112"&gt;&lt;span style="font-size:inherit;"&gt;This setup gives us flexibility:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-start="1115" data-end="1382"&gt;
&lt;li data-start="1115" data-end="1193"&gt;
&lt;p data-start="1117" data-end="1193"&gt;&lt;span style="font-size:inherit;"&gt;We can store documents at any level (applicant, guarantor, collateral, etc.)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1196" data-end="1295"&gt;
&lt;p data-start="1198" data-end="1295"&gt;&lt;span style="font-size:inherit;"&gt;We can handle new document uploads &lt;strong data-start="1233" data-end="1248"&gt;mid-process&lt;/strong&gt; (like if Credit asks CRM to re-send more docs)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1298" data-end="1380"&gt;
&lt;p data-start="1300" data-end="1380"&gt;&lt;span style="font-size:inherit;"&gt;It keeps our business data clean and avoids spreading document fields everywhere&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-start="1385" data-end="1419"&gt;&lt;span style="font-size:inherit;"&gt;But We&amp;rsquo;ve Hit Some Friction&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="100" data-end="490"&gt;&lt;span style="font-size:inherit;"&gt;Our vendor is pushing back. They want to store document references &lt;strong data-start="167" data-end="197"&gt;inside each business table&lt;/strong&gt; (like &lt;code data-start="204" data-end="215"&gt;APPLICANT&lt;/code&gt;, &lt;code data-start="217" data-end="229"&gt;COLLATERAL&lt;/code&gt;, etc.).&lt;/span&gt;&lt;br data-start="237" data-end="240" /&gt;&lt;span style="font-size:inherit;"&gt; Not only that &amp;mdash; they also want to create &lt;strong data-start="283" data-end="328"&gt;dedicated relationships for each document&lt;/strong&gt; inside those tables, meaning that for every document, there would be a foreign key column in the business entity pointing to the &lt;code data-start="458" data-end="472"&gt;DOCUMENT_LOG&lt;/code&gt;.&lt;/span&gt;&lt;br data-start="473" data-end="476" /&gt;&lt;span style="font-size:inherit;"&gt; For example:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-start="493" data-end="624"&gt;
&lt;li data-start="493" data-end="563"&gt;
&lt;p data-start="495" data-end="563"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="495" data-end="506"&gt;APPLICANT&lt;/code&gt; would have columns like &lt;code data-start="531" data-end="548"&gt;cbjConsentDocId&lt;/code&gt;, &lt;code data-start="550" data-end="563"&gt;idCopyDocId&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="566" data-end="622"&gt;
&lt;p data-start="568" data-end="622"&gt;&lt;span style="font-size:inherit;"&gt;&lt;code data-start="568" data-end="580"&gt;COLLATERAL&lt;/code&gt; would have &lt;code data-start="592" data-end="616"&gt;collateralAttachmentId&lt;/code&gt;, etc.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="627" data-end="741"&gt;&lt;span style="font-size:inherit;"&gt;This tightly couples documents to each business entity, and makes our model less flexible, especially considering:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-start="744" data-end="904"&gt;
&lt;li data-start="744" data-end="795"&gt;
&lt;p data-start="746" data-end="795"&gt;&lt;span style="font-size:inherit;"&gt;New documents may be requested during the process&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="798" data-end="852"&gt;
&lt;p data-start="800" data-end="852"&gt;&lt;span style="font-size:inherit;"&gt;Document types differ by process (e.g., KYC vs Loan)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="855" data-end="902"&gt;
&lt;p data-start="857" data-end="902"&gt;&lt;span style="font-size:inherit;"&gt;Some documents exist only in DMS (not Appian)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="907" data-end="1014"&gt;&lt;span style="font-size:inherit;"&gt;We believe a centralized and normalized &lt;code data-start="947" data-end="961"&gt;DOCUMENT_LOG&lt;/code&gt; table is more scalable across processes and systems.&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="1549" data-end="1737"&gt;They say:&lt;br data-start="1558" data-end="1561" /&gt; The vendor mentioned Appian has a 3-level relationship depth limit, which makes saving deeper/nested data and documents together challenging, especially in bulk operations.&lt;/p&gt;
&lt;p data-start="1744" data-end="2100"&gt;Additionally, the vendor raised a concern around bulk inserts of related entities like applicants and collaterals: when inserting many records at once, Appian returns generated IDs but does not specify which ID corresponds to which entity in the payload. This makes it difficult to correctly link multiple uploaded documents to their respective entities.&lt;/p&gt;
&lt;p data-start="2451" data-end="2575"&gt;Honestly, this sounds more like a workaround than a limitation. But we want to do it right &amp;mdash; and follow real best practices.&lt;/p&gt;
&lt;h3 data-start="1944" data-end="1969"&gt;&lt;span style="font-size:inherit;"&gt;Our Questions to You&lt;/span&gt;&lt;/h3&gt;
&lt;ol data-start="1972" data-end="2349"&gt;
&lt;li data-start="1972" data-end="2067"&gt;
&lt;p data-start="1975" data-end="2067"&gt;&lt;span style="font-size:inherit;"&gt;Is Appian really limited in a way that prevents us from using a shared &lt;code data-start="2046" data-end="2060"&gt;DOCUMENT_LOG&lt;/code&gt; table?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2070" data-end="2277"&gt;
&lt;p data-start="2073" data-end="2167"&gt;&lt;span style="font-size:inherit;"&gt;Is it better to keep document references in a centralized table, especially when we deal with:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-start="2173" data-end="2277"&gt;
&lt;li data-start="2173" data-end="2195"&gt;
&lt;p data-start="2175" data-end="2195"&gt;&lt;span style="font-size:inherit;"&gt;Multiple processes&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2201" data-end="2248"&gt;
&lt;p data-start="2203" data-end="2248"&gt;&lt;span style="font-size:inherit;"&gt;DMS integration (not just Appian documents)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2254" data-end="2277"&gt;
&lt;p data-start="2256" data-end="2277"&gt;&lt;span style="font-size:inherit;"&gt;Mid-process uploads&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start="2280" data-end="2347"&gt;
&lt;p data-start="2283" data-end="2347"&gt;&lt;span style="font-size:inherit;"&gt;How do others handle this in large-scale or event-driven setups?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="2352" data-end="2439"&gt;&lt;span style="font-size:inherit;"&gt;We&amp;rsquo;d love to hear how others approached this &amp;mdash; or if we&amp;rsquo;re missing something important.&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="2444" data-end="2462"&gt;&lt;span style="font-size:inherit;"&gt;Thanks in advance!&lt;br /&gt;&lt;br /&gt;CRM To Appian simplified sample JSON payload&lt;br /&gt;{&lt;br /&gt; &amp;quot;meta&amp;quot;: {&lt;br /&gt; &amp;quot;process&amp;quot;: &amp;quot;Retail.Murabaha.CarLoan.CreditReview&amp;quot;,&lt;br /&gt; &amp;quot;eventType&amp;quot;: &amp;quot;START_CREDIT_REVIEW&amp;quot;,&lt;br /&gt; &amp;quot;source&amp;quot;: &amp;quot;CRM&amp;quot;,&lt;br /&gt; &amp;quot;destination&amp;quot;: &amp;quot;BPM&amp;quot;,&lt;br /&gt; &amp;quot;isSynchronously&amp;quot;: false,&lt;br /&gt; &amp;quot;isAcknowledgment&amp;quot;: true,&lt;br /&gt; &amp;quot;correlationId&amp;quot;: &amp;quot;abc12345-0000-1111-2222-1234567890ab&amp;quot;,&lt;br /&gt; &amp;quot;transactionId&amp;quot;: &amp;quot;def67890-0000-2222-3333-0987654321ba&amp;quot;,&lt;br /&gt; &amp;quot;submittedBy&amp;quot;: 1001,&lt;br /&gt; &amp;quot;timestamp&amp;quot;: &amp;quot;2025-07-13T12:00:00Z&amp;quot;&lt;br /&gt; },&lt;br /&gt; &amp;quot;data&amp;quot;: {&lt;br /&gt; &amp;quot;application&amp;quot;: {&lt;br /&gt; &amp;quot;applicationType&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt; &amp;quot;branchCode&amp;quot;: &amp;quot;1000&amp;quot;,&lt;br /&gt; &amp;quot;submissionDate&amp;quot;: &amp;quot;2025-07-13T12:00:00Z&amp;quot;,&lt;br /&gt; &amp;quot;requestedAmount&amp;quot;: 15000.0,&lt;br /&gt; &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt; &amp;quot;tenorMonths&amp;quot;: 48,&lt;br /&gt; &amp;quot;annualProfitRate&amp;quot;: 6.0,&lt;br /&gt; &amp;quot;totalAmount&amp;quot;: 18000.0,&lt;br /&gt; &amp;quot;installmentAmount&amp;quot;: 375.0,&lt;br /&gt; &amp;quot;productInfo&amp;quot;: {&lt;br /&gt; &amp;quot;carBrand&amp;quot;: &amp;quot;GenericCar&amp;quot;,&lt;br /&gt; &amp;quot;carType&amp;quot;: &amp;quot;Sedan&amp;quot;,&lt;br /&gt; &amp;quot;productionYear&amp;quot;: 2020,&lt;br /&gt; &amp;quot;attachments&amp;quot;: {&lt;br /&gt; &amp;quot;carLicenseAttachment&amp;quot;: &amp;quot;uuid-car-license-001&amp;quot;&lt;br /&gt; }&lt;br /&gt; },&lt;br /&gt; &amp;quot;applicants&amp;quot;: [&lt;br /&gt; {&lt;br /&gt; &amp;quot;cif&amp;quot;: 12345,&lt;br /&gt; &amp;quot;personalInfo&amp;quot;: {&lt;br /&gt; &amp;quot;fullName&amp;quot;: &amp;quot;John Doe&amp;quot;,&lt;br /&gt; &amp;quot;nationalId&amp;quot;: &amp;quot;A123456789&amp;quot;&lt;br /&gt; },&lt;br /&gt; &amp;quot;attachments&amp;quot;: {&lt;br /&gt; &amp;quot;idCopy&amp;quot;: &amp;quot;uuid-id-copy-001&amp;quot;&lt;br /&gt; }&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &amp;quot;cif&amp;quot;: 12346,&lt;br /&gt; &amp;quot;personalInfo&amp;quot;: {&lt;br /&gt; &amp;quot;fullName&amp;quot;: &amp;quot;Jane Smith&amp;quot;,&lt;br /&gt; &amp;quot;nationalId&amp;quot;: &amp;quot;B987654321&amp;quot;&lt;br /&gt; },&lt;br /&gt; &amp;quot;attachments&amp;quot;: {&lt;br /&gt; &amp;quot;idCopy&amp;quot;: &amp;quot;uuid-id-copy-002&amp;quot;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; ],&lt;br /&gt; &amp;quot;collaterals&amp;quot;: [&lt;br /&gt; {&lt;br /&gt; &amp;quot;collateralType&amp;quot;: &amp;quot;Vehicle&amp;quot;,&lt;br /&gt; &amp;quot;collateralAmount&amp;quot;: 10000.0,&lt;br /&gt; &amp;quot;attachments&amp;quot;: {&lt;br /&gt; &amp;quot;collateralAttachment&amp;quot;: &amp;quot;uuid-collateral-001&amp;quot;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; ]&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Connecting to S3 via PrivateLink</title><link>https://community.appian.com/thread/39424?ContentTypeID=0</link><pubDate>Thu, 10 Jul 2025 04:58:22 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:494aa21c-d6e5-4595-a95c-7b7d3cc68d3f</guid><dc:creator>Meme02</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39424?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/39424/connecting-to-s3-via-privatelink/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi there,&lt;/p&gt;
&lt;p&gt;As a result of a process, a CSV file is output, and I want to store that file in AWS S3. Also, when needed, I want to be able to copy the file in S3 to the Appian Knowledge Center by pressing a button.&lt;/p&gt;
&lt;p&gt;I want to achieve this by connecting via AWS Private Link, not via the internet.&lt;/p&gt;
&lt;p&gt;To achieve this, is there any way other than using Lambda, etc.?&lt;/p&gt;
&lt;p&gt;There is an Amazon S3 Utilities plugin, but it seems to connect via the internet, so I don&amp;#39;t think it meets the requirements.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>