NightWing Enterprises
Demo for FileMaker Pro™

Selective History of Fields Edited per Record!

Modification Tracker

+ For FileMaker 13 and later +

For the benefit of clients and fellow developers, the following demonstration file is provided for free download.

Tracking data modifications can take many forms. Some are comprehensive and resource intensive while others minimalist in effort and overhead. We have developed and published numerous examples and techniques in the past - from our 'Rolling Log' demo (originally published in 2002) to the 2014 release of UltraLog v2.0, the latest version of our flagship full-featured audit system. However the techniques shown in the Modification Tracker demo a little different - in part because they leverage new capabilities in FileMaker 13, and in part because their focus is on *when* fields were edited and *which* fields were edited rather than on the data itself.

While the modification tracker techniques don't purport to provide an audit system as such (rather, they return transaction metadata), what's offered here is a significant step up from boilerplate metadata fields, offering a useful middle ground between the bare essentials and full-scale change logging.

Basic metadata fields such as a creation timestamp, a modification timestamp and perhaps a modification account field (at a minimum) are commonly found in each table of most solutions. The data these fields provide can be surprisingly useful in the diagnosis and correction of everything from data anomalies to system malfunctions. But for some purposes standard metadata isn't enough, and you'll want to know not just about the most recent modification, but about previous modifications - and you'll need to know not just that the record was modified, but which specific fields were updated.

The inclusion of the new (and not widely publicised) calculation function Get(ModifiedFields) in FileMaker 13 provided an opportunity to enhance and simplify the tracking of field changes - and to simultaneously accumulate a history of transactions affecting one field or multiple fields, in a single additional field per table.

Additionally, this demo shows a variation of the basic technique which allows the user to turn tracking on and off, thereby capturing a list of the fields in each record that have been edited in the intervening time. This provides useful input to data consolidation and synchronization processes, allowing them to be targeted and optimised, while enabling finer-grained treatment of data edit conflicts (by working at the field level rather than the record level).

The two systems shown within this demo file are each straightforward to implement and carry a modest footprint. The first technique requires only a single additional field per table (along with a modification timestamp), while the second technique uses two additional fields per table, plus three global system fields which provide control and input. Both techniques work from a list of fields to be tracked [that is supplied as the first variable in a Let( ) statement within the relevant auto-enter calculation].

The technique shown here is entirely native, and works across the FileMaker 13 platform, including FileMaker Server, FileMaker Go and Webdirect, as well as FileMaker Pro and FileMaker Pro Advanced. Both techniques can be implemented in minutes per table and provide immediate benefits in the form of expanded options for record and field transactional data and history.

  ZIP archive
Modification Tracker demo download (.zip archive)

Note 1:

The .zip archive download (above) provides a copy of the demo file suitable for all supported platforms.
Note 2: Before opening the demo file, please ensure you extract it from the .zip archive (eg to a local drive) - otherwise it will open in read-only mode and will not function as intended.
Modification Tracker demo for FileMaker Pro 13 and later

This demo is provided free for private and educational purposes, and may be licensed for commercial and business applications. Should you require assistance implementing procedures such as those shown in our example files, please consider establishing an account with us for developer support.