FileMaker 2023 has arrived!
Since 2020, the FileMaker versions were released as variations of 19, with the latest version being 19.6. If you have not been following what features were included in those versions, you can catch up here:
- A year in review, from 19.0 through 19.2
- A year in review, from 19.2 through 19.4
- FileMaker 19.5
- What’s new in 19.6
In a radical break with traditional version numbering, the FileMaker platform versioning starts using the year and also introduces a brand new logo to help differentiate it from the Claris Platform (which starts at version number 40). Meet the updated Claris FileMaker 2023 platform.
In this overview, you will find information about the features that piqued our interest. For a full overview of everything that is in these releases, see the Claris Release Notes.
Claris FileMaker Pro
More on the FileMaker 2023 Version Numbering
While the Claris FileMaker family version is 2023, the internal executable version number is going to be 20.1.x. And that is what you will get back when using Get(ApplicationVersion) or its variants.
Operating Systems and Required Version of FileMaker Server
On macOS, FileMaker Pro requires Monterey (12) or Ventura (13), so it drops support for both Big Sur (11) and Catalina (10) at the same time. On Windows, you need version 10 or 11, which hasn’t changed since 19.5, when support for Windows 8 was dropped.
Also, keep in mind that FileMaker Pro 2023 can only connect to FileMaker Server 19.4 and up. That is somewhat in line with Claris’ support policy which tags 19.3 to become end-of-life in a few months.
You will find more details in this blog post; this new feature can log information about record actions that happen in a file. It comes in the form of a new file-wide event trigger named OnWindowTransaction. Although the name seems to imply that it goes hand in hand with the new Transactions feature introduced with 19.6, the event is used on every record action, whether you use it in a 19.6-style transaction or not. When you create a new record, modify it, or delete it, the event will fire, and you can log the action.
Note that that feature is not an audit log. It does not know what fields were modified and their old and new values. You can certainly supplement the feature to do that if you want. The blog post mentioned earlier shows how to extend this new feature.
Perform Script on Server with CallBack
The Perform Script on Server script step has been around since version 13 and comes with two options: you either wait for its completion, or you fire it off and move on.
Now you have a third option, and it comes as its own script step:
The script that you specify (when_done in our example) will be called on the client when FileMaker Server is done running with the script it was tasked to run (error_logging in our example).
That callback script will run only when the client is idle, and no other scripts are running. In that way, it resembles how the Install OnTimer Script step behaves.
The callback option is a great addition; make sure to test carefully when and where it fires in your workflows to avoid surprises. More details coming soon.
Performance Improvements in Text Parsing
This community thread contains a ton of useful information on the impact of repeated Text and JSON parsing. It also uncovers an internal inefficiency in how variables are initiated when used in most Text parsing and JSON functions.
FileMaker 2023 fixes some of these issues with better memory allocation of variables involved in these operations. The table below shows the impact (using the demo file on the community thread).
OAuth Authentication for Sending Email
Three years ago, we started blogging about the plans of the big email providers to retire basic authentication through non-secure protocols such as POP, IMAP, and SMTP. Those plans were delayed a bit because of COVID but now are back in full force. All these providers allow for email sending and receiving through their APIs instead of through those old protocols, and we think that is the better way to go; it gives you the most control and the most features. Our demo included in those older blog posts can help guide you on how to set that up.
In the meantime, Claris has updated the Send Mail script step to work with Microsoft 365 and Google’s Workspace email service APIs. The functionality is available as a third option on the Send Mail script step, in addition to the existing choices of sending through the user’s email client or through regular SMTP:
The setup on the Microsoft / Google side is very similar to setting up any other API integration with their services and our existing blog posts on the subject outline the steps. We will dedicate a separate blog post to it.
Note that the setup involves using the client-credentials authentication flow designed for non-user application authentication (or server-to-server authentication). It does not involve the credentials of a specific user, nor does the user have to log into their Microsoft or Google account to use this feature. Because it is based on a service account, this option also works server-side.
Cached Temp Files
Any number of issues can be solved by clearing out the cached temp files. 19.6 already introduced a feature to completely zap all cached temp files from your machine; you can read up on that here.
But sometimes, you may not want to delete that cache for all files you have worked with, and you want to target the specific cache for one file.
Two new Get() functions will give you the information about the path and temp file’s name for the FileMaker where these functions are getting called from:
The result will be:
You still need to then delete that file manually, but this allows you to fix issues more granularly by targeting a specific file.
cURL aka Insert From URL
We are big fans of the Insert From URL script step since it is at the heart of all API integrations. Underneath it really isjust cURL implemented as a script step.
With this release you get added support for SFTP. (Not to be confused with FTPS, which was already possible with Insert From URL.
Execute FileMaker Data API Script Step Supports Multiple Date Formats
Since the release of 19.6, you can ask the external FileMaker Server Data API to return dates and timestamps in either the US date format (which is the default), the file locale’s format, or the ISO8601 format. This functionality is now also added to the internal Execute FileMaker Data API script step. Add a dateformats element to the request: 0 for US, 1 for file locale, or 2 for ISO8601. If not specified, the default value is 0. And the resulting JSON will represent the date and times in your chosen format.
Will get you:
FileMaker 2023 Design Functions
The design functions are an interesting bunch. About 10 years ago, I did a DevCon presentation that made extensive use of them to build the concept of an audit log system.
In FileMaker 2023, you can use some new ones to get information about the base tables in your files. Previously you would have had to jump through some hoops to get this information in an indirect way, so this makes it easier. We use these, for instance, to build self-documenting data dictionaries about solutions.
The functions are:
- BaseTableNames() and BaseTableIDs() – to complement the existing TableNames() and TableIDs(), which give you information about the table occurrences.
- GetBaseTableName( field ) – gives you the base table that this field is part of
- And a new FileMaker_BaseTables metadata table. This is a table you can query with the executeSQL() function, just like the other metadata tables FileMaker_Fields and FileMaker_Tables
Easier Connectivity to Claris Connect
In A Tale of Two Platforms, we explained where Claris Connect fits into the new Claris Platform, but that doesn’t mean you can’t use Connect from inside your FileMaker solutions. Triggering a Connect flow was always possible, and the setup on the Connect side gives a code example to follow. It looks something like this:
You prepare a specific bit of JSON that contains at least the action key with a value of script, plus the other data you want to pass along in JSON format. The extra data in our example is some_key set to some_value.
Then you use Insert from URL to call the URL that Connect has generated for you and call it like you call any other API, with the proper headers.
In FileMaker 2023, this becomes a bit easier with the new script step Trigger Claris Connect Flow:
The JSON now just needs to contain the data you want to send; you do not need to specify the action element. You also do not need to specify any headers cURL-style; the script step takes care of that for you.
This function to extract the content of a QR code from a picture stored in a container used to be macOS only and now also works on Windows. And it also works server-side on all three server platforms: macOS, Windows and Ubuntu.
Just like ReadQRCode(), the GetLiveText() function operates on a container and can extract text from a picture. This function is still macOS and iOS only. However, it supports more languages and can now run server-side if your FileMaker Server is hosted on macOS.
Support for ARM processors is probably the single biggest feature in this line-up. With this, you can use Ubuntu 22 to run your FileMaker Server more cheaply, and since ARM processors are currently more energy efficient, also in a more sustainable fashion.
In our performance testing, there are some aspects of typical FileMaker Server operations that are faster but not all operations. So much depends on the design and nature of your solution. Using the ARM processors is not a magical cure for performance issues.
And yes, this means that you can now use a Raspberry Pi as your FileMaker Server. We have one running. But can doesn’t mean should, even for me with a demonstrated love for the Pi (see the Billy Bass DevCon presentation and the SenseHat experiment).
Ubuntu 22 LTS
When you choose the ARM processors, you must use Ubuntu 22 LTS (Long Term Support). On AMD processors, you can also now opt for Ubuntu 22 LTS with its support through April 2027 or stick with Ubuntu 20 LTS, which is EoL in 2025.
FileMaker Server also includes an updated Docker script if you want to run your FileMaker Server in a Docker container.
FileMaker Server 2023 makes a significant jump in the required Java JRE version from 11 to 17. And if you choose to install the Java JDK instead of the JRE, you can use a new feature to force a Java memory garbage collection that can help the uptime of your server if you use the Web Publishing Engine a lot. See our separate blog post on this topic.
There are two important changes when it comes to logging:
- By default, FileMaker Server will now write all script errors to its own log named scriptEvent.log. If you want to switch back to the old behavior and have all those errors in the regular Event.log, then you can use the Admin Command Line to change the setting. We much prefer this new behavior because it means that your Event.log will not be cluttered with script information.
- The Set Error Logging script step is now supported in the server-side script engine used by PSoS and script schedules.
A lot more details about these two changes are in this new blog post.
Persistent Cache / Quick Server Restart
This feature is meant to help preserve data integrity if the FileMaker Server processes crash. The feature is off by default since it is currently only in preview.
In our testing, we have found no benefit or change in behavior from what happens after a crash. We highly recommend leaving this feature off.
For the longest time, you could only host 128 files on your FileMaker Server. That number is now bumped up to 256.
Security Updates in FileMaker 2023
The OpenSSL library used by FileMaker Server has been upgraded to version 3.0.8. For ODBC and JDBC connections, you now have the benefit of SHA256 instead of MD5 for X509_sign operations.
Your FileMaker Server on Ubuntu can now also authenticate users via Active Directory, both for access to the files and for access to the admin console.
When one of your backups fails its consistency check, and you have FileMaker Server configured to send out notifications, then this failure will now be included as well.
Data API and OData API
The script engine used by the Data API now supports Save as PDF. You no longer need to call a PSoS session from your Data API scripts, which makes the overall call more efficient.
The OData API now supports the OData 4.0 standard for working with related records (related entities, as it is called in OData-speak). You can add, delete and edit related records of the record you are targeting and do it the way that is standard for OData integrations. Note that this works only if the tables are related to your graph; you cannot define relationships on the fly.
This version focuses primarily on performance. The underlying version of Vaadin, Thrift, and Tomcat were upgraded, and a lot of work was done on the List view, which traditionally is one of the slowest aspects of displaying data. A feature was added to let you configure how many records are cached on the client for list view scrolling. It is a feature that is available only by modifying a config file; it is not exposed in the admin console.
More cached records mean that the initial layout loading will take more time, but list view scrolling will be smoother. Choosing fewer cached records will make the layout loading faster, but scrolling will invoke more round trips to your FileMaker Server.
Leveraging FileMaker 2023 Moving Forward
FileMaker 2023 is a normal continuation of the 19.x line. As always, we advise monitoring the community forums for any bug reports and issues reported by early adopters. Contact us to discuss details on any of these features and how they can add value to your solution.