# How to capture all changes made by a client?

**URL:** <https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258>\
**Category:** Ignition\
**Created:** [October 10, 2012, 5:43pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258 "2012-10-10T17:43:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![controlsim](https://avatars.discourse-cdn.com/v4/letter/c/47e85d/32.png) [@controlsim](https://forum.inductiveautomation.com/u/controlsim)\
**Post date:** [October 10, 2012, 5:43pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258/1 "2012-10-10T17:43:46Z")

</div>

Is there any way to capture all changes made by a client, like when a button is pushed, this to have better security if an error occurs, then I could see when and who produced the error. Is there any other way to do this than set an alarm?

---

<div class="post-metadata">

**Author:** ![James.Lorenz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/james.lorenz/32/3290_2.png) [@James.Lorenz](https://forum.inductiveautomation.com/u/James.Lorenz)\
**Post date:** [October 10, 2012, 6:21pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258/2 "2012-10-10T18:21:18Z")

</div>

There is an auditing feature in Ignition, but it doesn’t have built-in functionality for logging component events. You can use scripts on event handlers for components to capture various events executed by a user, whether it’s a click, key press, etc. In that script you would write to a database, passing whatever information you want to a table, including user name and user IP. You can get user information via client tags.

---

<div class="post-metadata">

**Author:** ![controlsim](https://avatars.discourse-cdn.com/v4/letter/c/47e85d/32.png) [@controlsim](https://forum.inductiveautomation.com/u/controlsim)\
**Post date:** [October 10, 2012, 6:32pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258/3 "2012-10-10T18:32:16Z")

</div>

OK, thanks for the help, I will try to learn more about scripting first 😉

---

<div class="post-metadata">

**Author:** ![James.Lorenz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/james.lorenz/32/3290_2.png) [@James.Lorenz](https://forum.inductiveautomation.com/u/James.Lorenz)\
**Post date:** [October 10, 2012, 6:39pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258/4 "2012-10-10T18:39:38Z")

</div>

Just as a tip, you should consider a global script module, and then you can call that module from the individual event handler scripts, passing along whatever pertinent information you want to that global module. That way, if you decide to make a change that affects all of the components’ scripts, you don’t have to edit all of those individual scripts, you can just change the global module. For more information about using module scripts:

[inductiveautomation.com/support/ … odules.htm](http://inductiveautomation.com/support/usermanuals/ignition/script_modules.htm)

---

<div class="post-metadata">

**Author:** ![controlsim](https://avatars.discourse-cdn.com/v4/letter/c/47e85d/32.png) [@controlsim](https://forum.inductiveautomation.com/u/controlsim)\
**Post date:** [October 10, 2012, 6:53pm UTC](https://forum.inductiveautomation.com/t/how-to-capture-all-changes-made-by-a-client/5258/5 "2012-10-10T18:53:56Z")

</div>

Thanks for the tip, now I can continue.
