8 Replies Latest reply on Jun 1, 2015 5:58 AM by chf

    Audit Log

    chf

      Title

      Audit Log

      Post

      Hi there,

      I would like to include a field in my tables that shows a log of all modifications made to that specific record.  I know this can be done using the Get (ModifiedFields), but I don't know how to make it show ALL modifications, not just the most recent time and user that has modified it.  When looking this up online, I found the demo attached, which is EXACTLY what I need, but when I try to incorporate this into my own solution, I run into problems.  The biggest problem is that the auto enter calculation for the "Change Log" field references "Excelisys_ChangeLog", which I can not seem to find anywhere.  It isn't a field, it isn't a script, and from looking at their website, it doesn't appear to be an add on either.  Does anyone know how I might go about incorporating this into my own solution?

       

      Here is the link to the demo:

       http://www.excelisys.com/blog/2014/06/26/filemaker-pro-13-tip-n-trick-easy-bake-filemaker-pro-13-audit-trail/

       

      Thank you!

        • 1. Re: Audit Log
          philmodjunk

          If you were to post the exact calculation used, we could easily tell you. But as is, that would either be the name of a table occurrence--a "box" in the relationship graph or a field. The difference is in syntax not included in your post as it might look like:

          Excelissys_ChangeLog::FieldName, in which case, it's a table occurrence.

          It might look like:

          TableOccurrenceName::Excelissys_ChangeLog, or just Excelissys_ChangeLog and then this is a reference to a field

          • 2. Re: Audit Log
            chf

            The exact calculation they used is:

            Case ( Modification Timestamp ;
             List (
              Excelisys_ChangeLog ( Get ( ModifiedFields ) ; Self ) ;
              Change Log
             )
            )

            • 3. Re: Audit Log
              chf

              They do not have any other tables or table occurances, their only table is "data" and the only fields in that table are "change log" "first name" "last name" "phone number" "modification timestamp" and "full name"

              • 4. Re: Audit Log
                chf

                It looks like it is listed under "functions" in their solution, but I have no idea how to get that function copied to my own solution

                • 5. Re: Audit Log
                  philmodjunk

                  It's a custom function. You will not be able to include that in your solution unless you have FileMaker Advanced where you can use Manage | custom functions to include that function in your own solution.

                  • 6. Re: Audit Log
                    chf

                    Well that is a bummer.  Any ideas on how to get an audit log without using their function?

                    • 7. Re: Audit Log
                      philmodjunk

                      Frankly, if you are doing something as complex as an audit log, you really need to invest in FileMaker Advanced as it's design tools can save you time, $$ and frustration.

                      There have been a few discussions of audit logging here in the forum that do not use the above method. They use script triggers to capture the current value of a field OnObjectEnter--using a script paramter to get the value before it changes, but putting the value in a global variable. An OnRecordCommit then creates a record in an AuditLog table and saves the data from the global field into that record before clearing the record. That's only the barest description of a process that builds a return separated list of field names and previous values in one or more global variables. before the commit triggered script saves the data into a change log record.

                      • 8. Re: Audit Log
                        chf

                        Okay thank you, that is very helpful.  I will invest in filemaker pro advanced.

                         

                        Thanks again!