<?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>How Should We Handle Documents in Enterprise BPM with Appian + DMS?</title><link>https://community.appian.com/discussions/f/best-practices/39436/how-should-we-handle-documents-in-enterprise-bpm-with-appian-dms</link><description>Hi everyone, 
 We’re building a large BPM platform in Appian for a bank. It handles multiple core processes like Loan Origination , KYC , and other services. We’re also integrating with both CRM and a Document Management System (DMS) — so document handling</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: How Should We Handle Documents in Enterprise BPM with Appian + DMS?</title><link>https://community.appian.com/thread/149842?ContentTypeID=1</link><pubDate>Mon, 14 Jul 2025 08:32:43 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3eb24e3e-0610-4bb2-99d1-5fcf71ef0bb0</guid><dc:creator>ahmadb3492</dc:creator><description>&lt;p&gt;Hi Stefan, really appreciate your insight.&lt;/p&gt;
&lt;p&gt;You&amp;#39;re absolutely right blindly centralizing across applications can cause more harm than good if not well-scoped. And your point about finding the right level of generalization is spot on.&lt;/p&gt;
&lt;p&gt;In our case, we&amp;rsquo;re building a single unified Appian BPM platform for a bank, not multiple siloed apps. This BPM layer handles many core processes (e.g., Loan Origination, KYC, Complaints, etc.), and receives structured data from CRM via Kafka. Each process involves different entity types (e.g., applicants, collaterals, companies), and each of those can require documents at different stages &amp;mdash; including mid-process uploads triggered by Credit or Risk teams.&lt;/p&gt;
&lt;p&gt;So our design centralizes only the document logging layer via a normalized DOCUMENT_LOG table&lt;/p&gt;
&lt;p&gt;which stores:&lt;/p&gt;
&lt;p&gt;process_id&lt;/p&gt;
&lt;p&gt;entity_type (like APPLICANT or COLLATERAL)&lt;/p&gt;
&lt;p&gt;entity_ref_id&lt;/p&gt;
&lt;p&gt;document_type&lt;/p&gt;
&lt;p&gt;Appian document ID and/or DMS UUID (we use an external DMS)&lt;/p&gt;
&lt;p&gt;This avoids scattering document columns across business tables and gives us a clean, auditable document trail across processes.&lt;/p&gt;
&lt;p&gt;We&amp;#39;re not trying to build one centralized record or interface &amp;mdash; just a decoupled way to log and track documents cleanly.&lt;/p&gt;
&lt;p&gt;As for the vendor&amp;rsquo;s concern: they argued that Appian has a 3-level relationship limit and that this prevents them from saving nested structures with documents. But that seems more like a limitation of how they&amp;rsquo;re using a!writeRecords() rather than an actual Appian restriction. We&amp;rsquo;ve suggested saving the documents after saving the related entities (using the returned primary keys), which avoids the issue entirely.&lt;/p&gt;
&lt;p&gt;So to summarize:&lt;/p&gt;
&lt;p&gt;We agree that overgeneralization is risky&lt;/p&gt;
&lt;p&gt;But in this case, document tracking is the exact kind of concern worth centralizing&lt;/p&gt;
&lt;p&gt;The &amp;quot;3-level depth limit&amp;quot; seems more about tooling convenience than a real architectural blocker&lt;/p&gt;
&lt;p&gt;Thanks again for your thoughtful reply. Would love to hear if others have used similar patterns &amp;mdash; especially in enterprise Appian+DMS scenarios.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How Should We Handle Documents in Enterprise BPM with Appian + DMS?</title><link>https://community.appian.com/thread/149828?ContentTypeID=1</link><pubDate>Mon, 14 Jul 2025 05:57:35 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:83e73a4e-4d9e-4929-ac01-28e82f9b3887</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;In my experience, trying to centralize things across multiple Appian applications is a mixed bag. I have seen systems where colliding requirements and expectations lead to serious issues.&lt;/p&gt;
&lt;p&gt;The real challenge is to find the right level to generalize certain functionality. There is no wrong&amp;nbsp;or right as it always depends on so many things.&amp;nbsp;&lt;/p&gt;
[quote userid="289791" url="~/discussions/f/best-practices/39436/how-should-we-handle-documents-in-enterprise-bpm-with-appian-dms"]&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;[/quote]
&lt;p&gt;I do not opt for centralized objects, and try to build a simple data model, even if that means it is only slightly normalized.&lt;/p&gt;
&lt;p&gt;Then, I do not know of any hard limit in terms of relationship depth. But, I have seen deeply nested models to suffer in performance, when, and only when, queries become complex. But this is no different to a slow view in a database.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>