| Components | All | New | MacOS | Windows | Linux | iOS | ||||
| Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old | |
SchemaChange.Changes
Queries the changes, that the plugin received.
| Component | Version | macOS | Windows | Linux | Server | iOS SDK |
| SchemaChange | 15.5 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
MBS( "SchemaChange.Changes" )
Parameters
none
Result
Returns JSON array, empty or error.
Description
Queries the changes, that the plugin received.Calling this function clears the list and reports it back as JSON array.
The plugin adds two fields "counter" and "timestamp" with the change counter and the current timestamp as text.
You may have a scheduled script running on the server to react to changes.
e.g. by using JSON.InsertRecord to add this to a log table or by running Save as XML script step to export the solution.
This function only works in the server scripting process in FileMaker 21.1 or newer.
The catalog value in the JSON may report one of these catalogs: custom function, custom menu set, data source, extended privilege, field, layout, script, privilege set, table, table alias, theme, user account, value list. There may be more.
Result is "" if no changes are recorded.
You need to call SchemaChange.Enable to enable the feature.
Examples
Sample script to log changes to records:
# check for pending changes
Set Variable [ $changes ; Value: MBS("SchemaChange.Changes") ]
#
# if we have changes, log them to a table
If [ Length ( $changes ) > 0 ]
Set Variable [ $r ; Value: MBS("JSON.InsertRecords"; Get(FileName); "SchemaChanges"; $changes) ]
# table must have the following fields: account, catalog, file, id, user, basetableid, counter and time
End If
Set Variable [ $changes ; Value: MBS("SchemaChange.Changes") ]
#
# if we have changes, log them to a table
If [ Length ( $changes ) > 0 ]
Set Variable [ $r ; Value: MBS("JSON.InsertRecords"; Get(FileName); "SchemaChanges"; $changes) ]
# table must have the following fields: account, catalog, file, id, user, basetableid, counter and time
End If
Query changes after creating a new field:
Set Variable [$json; Value: MBS( "SchemaChange.Changes" ) ]
Example result:
[ { "account": "Admin", "catalog": "table alias", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 43, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "basetableid": "130", "catalog": "field", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 44, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "3", "user": "Christian Schmitz", "counter": 45, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 46, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 47, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "3", "user": "Christian Schmitz", "counter": 48, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 49, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 50, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "basetableid": "130", "catalog": "field", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 51, "time": "11/10/2025 11:20:07 AM" } ]
Example result:
[ { "account": "Admin", "catalog": "table alias", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 43, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "basetableid": "130", "catalog": "field", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 44, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "3", "user": "Christian Schmitz", "counter": 45, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 46, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 47, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "3", "user": "Christian Schmitz", "counter": 48, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 49, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "catalog": "layout", "file": "Assets.fmp12", "id": "<meta>", "user": "Christian Schmitz", "counter": 50, "time": "11/10/2025 11:20:07 AM" }, { "account": "Admin", "basetableid": "130", "catalog": "field", "file": "Assets.fmp12", "id": "<all>", "user": "Christian Schmitz", "counter": 51, "time": "11/10/2025 11:20:07 AM" } ]
See also
Example Databases
Blog Entries
This function checks for a license.
Created 10th November 2025, last changed 18th November 2025