<?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>RE: State in appian</title><link>https://community.appian.com/thread/154598?ContentTypeID=1</link><pubDate>Wed, 13 May 2026 16:17:00 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:62eea1b4-281a-484d-96ba-d18130a2e2b2</guid><dc:creator>elvisb958752</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154598?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I was able to come up with a solution. Thank you for your response anyway!&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;</description></item><item><title>RE: State in appian</title><link>https://community.appian.com/thread/154597?ContentTypeID=1</link><pubDate>Wed, 13 May 2026 16:16:19 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:50fbad20-3763-4d43-b0c5-9df1fc1331d4</guid><dc:creator>elvisb958752</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154597?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;ur answer is the same as Stefan,&amp;nbsp; u need to understand that once u save them locally there is no difference anymore, ur comparing the same value, values never get updated locally, they get updated once u write them to database. I was able to find a solution, but thank u for ur answer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Appian Cloud Service</title><link>https://community.appian.com/thread/154595?ContentTypeID=1</link><pubDate>Wed, 13 May 2026 12:50:08 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:ba4c0233-fcbd-4413-98b9-1329cf8e69c5</guid><dc:creator>danielled676203</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154595?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/8012/appian-cloud-service/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Interesting article, I recommend reading it -&amp;nbsp;&lt;span data-sheets-root="1"&gt;&lt;a href="https://www.abtosoftware.com/services/robotic-process-automation-services"&gt;www.abtosoftware.com/.../robotic-process-automation-services&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Appian Cloud Service</title><link>https://community.appian.com/thread/8012?ContentTypeID=0</link><pubDate>Mon, 11 Jul 2016 21:59:37 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:7a694b66-f86f-4e49-998c-1122cf5b5603</guid><dc:creator>joep45</dc:creator><slash:comments>7</slash:comments><comments>https://community.appian.com/thread/8012?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/8012/appian-cloud-service/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;For those running Appian in the cloud is it considered SaaS or PaaS?&lt;/p&gt;
&lt;p style="display:none;"&gt;OriginalPostID-223031&lt;/p&gt;
&lt;p style="display:none;"&gt;OriginalPostID-223031&lt;/p&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;</description></item><item><title>RE: pessimistic locking</title><link>https://community.appian.com/thread/154586?ContentTypeID=1</link><pubDate>Tue, 12 May 2026 12:24:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:6b750606-a0c7-4129-a874-175682878daa</guid><dc:creator>Mike Schmitt</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154586?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>[quote userid="335211" url="~/discussions/f/best-practices/40366/pessimistic-locking/154584"]Appian does not provide a direct equivalent of `SELECT FOR UPDATE`, which means multiple users may end up selecting the same “next” voucher concurrently.[/quote]
&lt;p&gt;If you implement a process that quickly (in successive nodes) does this check-then-write, structured like I described in my prior comment, then users will not be able to do this.&amp;nbsp; Not accidentally, and not even if they&amp;#39;re testing to try to break the system you have set up.&lt;/p&gt;
[quote userid="335211" url="~/discussions/f/best-practices/40366/pessimistic-locking/154584"]&lt;p&gt;whether pessimistic locking on such an object could become a bottleneck or cause noticeable performance degradation.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;If your system can already handle several thousand users working concurrently, a system like the one I described should make little to no performance difference.&lt;/p&gt;
[quote userid="335211" url="~/discussions/f/best-practices/40366/pessimistic-locking/154584"]Any insights would be greatly appreciated[/quote]
&lt;p&gt;Just design something and test it.&amp;nbsp; Keep the lead-up sequence tight, and pay attention to the ordering of the nodes so as to handle the different use cases (e.g. when two users both click the same task within a few seconds of each other from their task lists).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pessimistic locking</title><link>https://community.appian.com/thread/154584?ContentTypeID=1</link><pubDate>Tue, 12 May 2026 11:07:28 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:bd48b217-2fb6-4915-abfc-0311bdc3837e</guid><dc:creator>MM</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154584?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Sorry for the delayed follow-up, and thank you very much for your responses.&lt;/p&gt;
&lt;p&gt;Thank you for the detailed explanations so far &amp;mdash; they are very helpful.&lt;/p&gt;
&lt;p&gt;Let me add more context about my actual use case, as it seems quite relevant to the DB-backed task example you mentioned.&lt;/p&gt;
&lt;p&gt;In our business scenario, multiple users work together to review and correct already-registered voucher (transaction) records in Appian.&lt;br /&gt;The workflow is not task-based; instead, users pick records from a shared pool and work on them one by one.&lt;/p&gt;
&lt;p&gt;The intended behavior is:&lt;br /&gt;- When a user starts working on a voucher, its status is updated to &amp;ldquo;In Progress&amp;rdquo;.&lt;br /&gt;- The voucher that was previously being handled by the user is set back to &amp;ldquo;Accepted&amp;rdquo; (or a completed state).&lt;br /&gt;- We need to ensure that the same voucher cannot be picked by multiple users at the same time.&lt;/p&gt;
&lt;p&gt;In a traditional database design, this would typically be handled using something like `SELECT FOR UPDATE` to atomically claim the next voucher.&lt;br /&gt;However, as far as I understand, Appian does not provide a direct equivalent of `SELECT FOR UPDATE`, which means multiple users may end up selecting the same &amp;ldquo;next&amp;rdquo; voucher concurrently.&lt;/p&gt;
&lt;p&gt;Because of this limitation, we are considering introducing a dedicated object (or table) to manage voucher assignment and status, and using pessimistic locking to ensure exclusive ownership while a voucher is being edited.&lt;/p&gt;
&lt;p&gt;My concern is scale: in peak periods, several thousand users may perform this operation at roughly the same time.&lt;br /&gt;That raises the question of whether pessimistic locking on such an object could become a bottleneck or cause noticeable performance degradation.&lt;/p&gt;
&lt;p&gt;Given this context, I would appreciate guidance on:&lt;br /&gt;- Whether this type of &amp;ldquo;first-claim-wins&amp;rdquo; record assignment is a reasonable use case for pessimistic locking in Appian&lt;br /&gt;- Any design patterns or architectural techniques to minimize contention and performance impact (for example, batching, sharding, or alternative locking approaches)&lt;br /&gt;- Or whether there is a more Appian-native pattern that would be preferable for this kind of scenario&lt;/p&gt;
&lt;p&gt;Any insights would be greatly appreciated.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/154531?ContentTypeID=1</link><pubDate>Wed, 06 May 2026 06:52:24 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:9f607e5e-375f-40d7-b163-f7c73331fe90</guid><dc:creator>VarunTejaGurrapu</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154531?ContentTypeID=1</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;Hi&amp;nbsp;&lt;a href="/members/udhayak0001"&gt;udhay kumar&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;I strongly follow this approach, its just my opinion as per best practice, you can also follow this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;&lt;strong&gt;Firstly, Check the dependencies in :&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Process Models,&amp;nbsp;Integrations,&amp;nbsp;Database-level dependencies (SP,views,Triggers), Running Processes.&lt;/p&gt;
&lt;p&gt;Best way to delete:&lt;/p&gt;
&lt;h2 id="mcetoc_1jnu0pvks0" data-section-id="1r7oylv" data-start="1014" data-end="1057"&gt;Step 1: Soft deprecate (recommended)&lt;/h2&gt;
&lt;ul data-start="1058" data-end="1139"&gt;
&lt;li data-section-id="tadx9c" data-start="1058" data-end="1087"&gt;Stop using column in Appian&lt;/li&gt;
&lt;li data-section-id="egtled" data-start="1088" data-end="1119"&gt;Remove from CDT + record type&lt;/li&gt;
&lt;li data-section-id="tg6gxw" data-start="1120" data-end="1139"&gt;Keep column in DB&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jnu0pvks1" data-section-id="m88wn2" data-start="1146" data-end="1177"&gt;Step 2: Deploy &amp;amp; monitor&lt;/h2&gt;
&lt;ul data-start="1178" data-end="1245"&gt;
&lt;li data-section-id="14hma6u" data-start="1178" data-end="1192"&gt;Watch logs&lt;/li&gt;
&lt;li data-section-id="17xu4qe" data-start="1193" data-end="1219"&gt;Check process failures&lt;/li&gt;
&lt;li data-section-id="1xje6w3" data-start="1220" data-end="1245"&gt;Validate integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1jnu0pvks2" data-section-id="1dsm3ls" data-start="1252" data-end="1284"&gt;Step 3: Drop column in DB (if not dropped, you can use those fields in future, if needed)&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;strong data-start="1263" data-end="1284"&gt;&lt;pre class="ui-code" data-mode="text"&gt;ALTER TABLE table_name DROP COLUMN column_name;&lt;/pre&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><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;</description></item><item><title>RE: Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/154530?ContentTypeID=1</link><pubDate>Wed, 06 May 2026 06:47:59 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a5f3aae6-4a72-4db6-96db-9e2ad1c61dbc</guid><dc:creator>ayanchoudhury</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154530?ContentTypeID=1</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;I think if you are having a record type then then the dependency will be sugested by appian when you are removing he column, if so you are using CDT the check the dependent artifacts and might need to remove those dependencied if they breaks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/154528?ContentTypeID=1</link><pubDate>Wed, 06 May 2026 06:15:47 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:96e87ef2-e52d-41e7-ad98-a105cb9dfca1</guid><dc:creator>pradeepkumawat</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154528?ContentTypeID=1</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;Open Record, navigate to the Data Model, and click the delete icon next to the column you want to remove. Appian will automatically display all dependencies for that column. Review them carefully and remove or update the dependencies wherever the column is being used.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: State in appian</title><link>https://community.appian.com/thread/154527?ContentTypeID=1</link><pubDate>Wed, 06 May 2026 05:33:53 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a7119529-4143-4fef-bdb2-adf24c488fa4</guid><dc:creator>VarunTejaGurrapu</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154527?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="/members/elvisb958752"&gt;elvisb958752&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;Its basically a field level audit, but we need to store them in a local variables first and compare them, when clicked on Submit, just store the difference of the data from local variables into rule input and pass them into PM, that will be the best approach, stefan&amp;#39;s answer states the same!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/154526?ContentTypeID=1</link><pubDate>Tue, 05 May 2026 19:35:55 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:e2ad5fa3-e253-4203-8b62-a6e21813ccb6</guid><dc:creator>GauravSingh</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154526?ContentTypeID=1</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;You&amp;rsquo;re already doing the right kind of due diligence&amp;mdash;but I wouldn&amp;rsquo;t call it &amp;ldquo;safe enough to delete&amp;rdquo; just yet. In Appian, unused-looking columns can still bite you later because usage isn&amp;rsquo;t always obvious or directly referenced.&lt;/p&gt;
&lt;p&gt;Appian has indirect usage patterns that won&amp;rsquo;t show up clearly in these checks: like&amp;nbsp; Process variables (PV mappings),Script tasks / expressions, Smart services (Write to Data Store, integrations).&lt;/p&gt;
&lt;p&gt;if Appian doesn&amp;rsquo;t use the field internally, External systems might expect it, APIs might still send/receive it so you can check the following objects: Integration objects, Web APIs, Connected systems&lt;/p&gt;
&lt;p&gt;Sometimes fields are dynamically referenced (fv!item[fieldName])&lt;/p&gt;
&lt;p&gt;Database-level dependencies:&amp;nbsp;Check in DB Views using the column, Stored procedures,Triggers&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So on a high note instead of deleting it&amp;nbsp;Rename column from fieldname to&amp;nbsp;fieldname_DEPRECATED and verify if its working or breaking the logic&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Safely removing unused columns identified via dependency checks in Appian</title><link>https://community.appian.com/thread/154525?ContentTypeID=1</link><pubDate>Tue, 05 May 2026 19:09:00 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:1a3bbfc5-6d55-483f-9dbd-a8a2982490bf</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154525?ContentTypeID=1</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;I think your approach is valid. Just make sure there is no dependency. To validate this, you could rename the columns and check whether the application keeps working. Then, delete them after validation.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: State in appian</title><link>https://community.appian.com/thread/154524?ContentTypeID=1</link><pubDate>Tue, 05 May 2026 19:06:16 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a832851a-6959-4996-9f7e-7ee5a312191e</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154524?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Do you want to explain your current implementation in more detail? I am sure we can find a way to get this working.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: State in appian</title><link>https://community.appian.com/thread/154523?ContentTypeID=1</link><pubDate>Tue, 05 May 2026 14:47:22 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:b21c65b5-18bc-47fe-9da0-5cfd651234be</guid><dc:creator>elvisb958752</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154523?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I cannot pass local variables to the process model. If i use the difference function the process model is gonna read them as null.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: State in appian</title><link>https://community.appian.com/thread/154521?ContentTypeID=1</link><pubDate>Tue, 05 May 2026 12:19:46 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c93aaa8c-84c6-409c-96e3-b197fd52e6c3</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154521?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40401/state-in-appian/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The difference function allows you to compare two lists. Store the old selection to a local and compare it to the new on submit.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pessimistic locking</title><link>https://community.appian.com/thread/154415?ContentTypeID=1</link><pubDate>Mon, 27 Apr 2026 21:28:32 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:1faa3395-82d4-4ac7-a690-42c06abbc428</guid><dc:creator>Mathieu Drouin</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154415?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This article provides a good roundup of the trade offs as well as a App Market implementation&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="/success/w/article/3213/data-locking-strategies"&gt;https://community.appian.com/success/w/article/3213/data-locking-strategies&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pessimistic locking</title><link>https://community.appian.com/thread/154380?ContentTypeID=1</link><pubDate>Thu, 23 Apr 2026 13:45:48 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3ca1a234-0967-423e-89bd-fd9a61ddefc2</guid><dc:creator>Mike Schmitt</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154380?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This is entirely context dependent.&amp;nbsp; What are you hoping to implement this on?&lt;/p&gt;
&lt;p&gt;For instance, I&amp;#39;ve implemented this before to do database-backed faux-group-tasks - as in, when a user sees a &amp;quot;task list&amp;quot; that&amp;#39;s really queried from a DB where you control who sees the &amp;quot;task names&amp;quot; via whatever databse-backed controls you devise, and clicking the link (instead of actually opening a running task) launches a process that then freshly invokes the actual task.&amp;nbsp; After clicking, a quick DB query establishes that nobody else has opened it yet, and if not, a quick write is made to soft-assign it to that user.&amp;nbsp; If someone else had opened it, the user is routed to a &amp;quot;fallback&amp;quot; task telling them someone has opened it already.&lt;/p&gt;
&lt;p&gt;As long as this is well thought out, and conscientiously designed, the &amp;quot;performance impact&amp;quot; is essentially nothing.&amp;nbsp; It works so quickly that users wouldn&amp;#39;t notice any difference even under stress testing conditions, IIRC.&lt;/p&gt;
&lt;p&gt;But if your use case is something far removed from this (which I have no way of knowing since you didn&amp;#39;t really specify), then I can&amp;#39;t really speak to it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pessimistic locking</title><link>https://community.appian.com/thread/154378?ContentTypeID=1</link><pubDate>Thu, 23 Apr 2026 12:12:51 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:578d34ab-0294-46bd-893a-cbe9a3696cc1</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154378?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/best-practices/40366/pessimistic-locking/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Well, if you need locking, the impact is a consequence of that decision.&lt;/p&gt;
&lt;p&gt;My first question would be more like,&amp;nbsp;why do you think you would need locking.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nested CDT takes too long to query data</title><link>https://community.appian.com/thread/154247?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2026 10:13:12 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:f3b23dfa-8f60-4cc8-9120-424697e0ffc8</guid><dc:creator>Harsha Sharma</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154247?ContentTypeID=1</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;Appian doesnt recommend to use Nested CDTs in general. So better to normalise the cdts using foreign keys would be the best approach, if feasible. Or even move to record type/ data fabric!&lt;/p&gt;
&lt;p&gt;For time out, find the cause of the time out in query. E.g. try querying 1,10 or 100 rows as per need to find the root of the timeout issue.&lt;/p&gt;
&lt;p&gt;Another suggestion is if you are querying to show data in a grid, which is why you might need to query multiple rows - query just the main record data (except nested cdts) and show them in grid. The relative nested data can be queried and shown in separate UI component for each row - thus nested data will be queried one for each row rather than multiple at once.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Can discuss further for each of the above approaches, yet hope these general suggestions help.&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;</description></item><item><title>RE: Nested CDT takes too long to query data</title><link>https://community.appian.com/thread/154246?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2026 10:09:56 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:b6dd19d6-966d-4734-ab76-4f873d4224a8</guid><dc:creator>Shubham Aware</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154246?ContentTypeID=1</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;Deeper nesting can create an N+1 query problem and slow queries or timeouts.&lt;br /&gt;Create a DB view with the required JOINs and map it to a single flat CDT. Then query that view with one a!queryEntity() call, using paging and only the fields you need.&amp;nbsp;&lt;br /&gt;For longer-term maintainability, consider Record Types with Relationships(Replace deep nested CDTs with flat related CDTs)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nested CDT takes too long to query data</title><link>https://community.appian.com/thread/154245?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2026 09:39:15 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:534390c3-3de4-4f3c-ac6e-add4ef3e2ada</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154245?ContentTypeID=1</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;Well, you will have to analyze why it takes so much time. Try to fetch only the data you need.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>