<?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>Audit Trail</title><link>https://community.appian.com/discussions/f/general/8267/audit-trail</link><description>We have a requirement to create an audit trail in our app that captures every change made on each record at the field level. In addition, we also need to store the original and new value of the field. This is goes beyond the typical audit trail use case</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/120930?ContentTypeID=1</link><pubDate>Thu, 26 Oct 2023 12:04:10 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d832ea8f-d894-4abf-9e7f-fce960f9d397</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;You are not the first to ask this question. I suggest to search a bit.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/120926?ContentTypeID=1</link><pubDate>Thu, 26 Oct 2023 11:47:52 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:b934d281-71b6-4f6b-9f1d-abd89a869e2f</guid><dc:creator>Naveen M</dc:creator><description>&lt;p&gt;How to implement the field level audit to capture the old value &amp;amp; new value using record approach. we are not using cdt to capture the data. without going to&amp;nbsp; DB Triggers, can we achieve this in appian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/109010?ContentTypeID=1</link><pubDate>Wed, 08 Mar 2023 11:00:10 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3b481b11-cc68-401e-b23d-cd2213145021</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;This is an ages old conversation. Which specific questions do you have?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/109009?ContentTypeID=1</link><pubDate>Wed, 08 Mar 2023 10:41:15 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:680f8dd6-f083-4478-bc18-d4a2db374f4e</guid><dc:creator>Bathula Yagna Sai Laxmi</dc:creator><description>&lt;p&gt;Hi Pratiksha&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you have done the above requirement can you pls help us.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63444?ContentTypeID=1</link><pubDate>Sat, 15 Dec 2018 08:25:29 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c4dfa690-2e92-485f-b21d-8ed5f86df6fc</guid><dc:creator>ManuelHTG</dc:creator><description>Hi,&lt;br /&gt;
&lt;br /&gt;
Perhaps a stupid question, but how do you implement the DB triggers and how would you later use that data in your application.&lt;br /&gt;
&lt;br /&gt;
Let&amp;#39;s say, you want to be able to click on a record and see the audit, with this like: when it was modified, what was modified and who modified it.&lt;br /&gt;
&lt;br /&gt;
Best,&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63437?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 18:37:36 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:0233ffc3-73d4-4962-a736-1dfd43b437fa</guid><dc:creator>pratiksha nawale</dc:creator><description>I prefer below 2 solutions each has there own pros and cons&lt;br /&gt;
&lt;br /&gt;
Implementing Audit Trail Using dedicated Table lets say History and manually making the entry in History table wherever required&lt;br /&gt;
	e.g &lt;br /&gt;
	Employee&lt;br /&gt;
		empId&lt;br /&gt;
		name&lt;br /&gt;
		&lt;br /&gt;
	EmployeeHistory&lt;br /&gt;
	 empHistoryId&lt;br /&gt;
	 empId&lt;br /&gt;
	 name&lt;br /&gt;
	 dateAdded&lt;br /&gt;
&lt;br /&gt;
Pros: &lt;br /&gt;
1. As you are adding the data in EmployeeHistory table you have tight control over what data you need in EmployeeHistory&lt;br /&gt;
&lt;br /&gt;
Cons&lt;br /&gt;
1. Implementing this for all records and updating all process models may increase development and Testing efforts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Database Triggers&lt;br /&gt;
1. Implement the database trigger to log the change  in history table &lt;br /&gt;
&lt;br /&gt;
Pros &lt;br /&gt;
1. Easy to implement&lt;br /&gt;
&lt;br /&gt;
Cons&lt;br /&gt;
1. There might be performance hit if you try to update/insert bulk data. Also if production support team executing any data fix script for large volume of data, you may need to switch off the trigger at that time &lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
Pratiksha&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63433?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 14:44:14 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:f544dd20-cc98-445e-a13f-af4aca18762d</guid><dc:creator>Mike Schmitt</dc:creator><description>Yes, this is certainly a cost / risk inherent in implementing it the way I suggest.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63432?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 14:42:53 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5b3644aa-c806-4dcf-a671-a01d96b79a36</guid><dc:creator>harrisont606</dc:creator><description>My fear with doing it through Appian is that a developer can forget to implement the rule when they make a new process to update a table. This can create costly discrepancies between historical data and current data, especially if the historical data is being consumed by an external report. If you do it with triggers you never have to worry about that (but you could potentially have performance issues).&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63431?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 14:40:35 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:149c4ba7-3be3-485a-abec-56fae5082c5c</guid><dc:creator>Mike Schmitt</dc:creator><description>I&amp;#39;ve been involved with building this sort of thing manually within Appian - not always but definitely sometimes capturing field-level changes. For me it&amp;#39;s usually been the case that we use a master audit log table, which has specific columns indicating the acting user and date of change, a record ID field and a record type ID field, where the type ID tells us which data type / table it&amp;#39;s acting on, and the record ID field tells us which actual row.  Then to store record-specific details or field-level change details, or in other cases just a note about the nature of the audit log entry being made, there&amp;#39;s a large text field in which we store JSON text, controlled by expression rules we write in Appian.  This gives us the ability to have some flexibility in the usage for a fixed table structure, and tweak the granularity of detail we store when needed.  For viewing the log data later, a different expression rule decodes the JSON data and usually keys off which record type ID that row has, etc.  This method takes some manual work to set up obviously, but the benefit is you have total control over how it acts and is 100% Appian out-of-box.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63429?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 13:41:58 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8c42fc47-34aa-4acd-9fa1-0e6296145b61</guid><dc:creator>harrisont606</dc:creator><description>I think DB triggers are the way to go here. If you have massive inserts or updates you may face performance problems though.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/63420?ContentTypeID=1</link><pubDate>Fri, 14 Dec 2018 11:04:48 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:95649d0a-8b8c-4583-b976-02139d99655a</guid><dc:creator>ManuelHTG</dc:creator><description>the link seems old, just giving an update&lt;br /&gt;
&lt;a href="https://community.appian.com/b/appmarket/posts/audit-history-application"&gt;community.appian.com/.../audit-history-application&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/36191?ContentTypeID=1</link><pubDate>Tue, 23 Aug 2016 08:31:29 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:6e18615d-0bd4-4bf9-87ed-70b2462b72e2</guid><dc:creator>narasimhaadityac</dc:creator><description>Hi Angad, We have implemented the field level triggers at the database level through usage of the re usable package and making the partitions and indexes for better performance.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/36190?ContentTypeID=1</link><pubDate>Tue, 23 Aug 2016 07:35:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8ad4b035-70e7-4de5-b3ee-a062a6015305</guid><dc:creator>Stefan Helzle</dc:creator><description>Check this plugin: &lt;a href="https://forum.appian.com/suite/tempo/records/item/lMBCLGOdlMUpdGVqW3dQaIKmclBmvvNEj8vu_cjb7T-5YiPr4Fu8ly5Yj1s09uenE4RYzA8zKyx7eiUh-6mLnOFWZ2Kw3DS9B6D9fYp5XMFVd8xmQ/view/summary"&gt;forum.appian.com/.../summary&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/36185?ContentTypeID=1</link><pubDate>Tue, 23 Aug 2016 05:48:39 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:99168771-e4b4-4bd4-b473-9ba640d5625f</guid><dc:creator>angadc</dc:creator><description>Thanks Abhi. I&amp;#39;m familiar with the Audit History App. It doesn&amp;#39;t quite meet the needs of our use case, which includes auditing at a field level. The Audit History App and the typical Audit Trail use cases audit at the event/action type level like Created, Approved, etc. We want to be able to log the original and new value for each data value modified. &lt;br /&gt;&lt;br /&gt;For example, in a record of Customers, if the name and address was updated, we need to have the original and new values of the two fields in the audit history.&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Audit Trail</title><link>https://community.appian.com/thread/36179?ContentTypeID=1</link><pubDate>Tue, 23 Aug 2016 04:22:56 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5e5be29e-6c60-41ef-b1db-86ed48b2de11</guid><dc:creator>abhi.jana</dc:creator><description>This could be helpful - &lt;a href="https://forum.appian.com/suite/help/16.2/Generic_Audit_History_Application.html"&gt;forum.appian.com/.../Generic_Audit_History_Application.html&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>