Beta Release: ACF Plugin for Linux Server

While the macOS and Windows versions of the ACF Plugin have been stable for a long time, the Linux edition is brand new. After extensive internal testing, it has now moved out of the Alpha stage and into public Beta. This means it’s ready for broader testing — but should still only be used on non-production FileMaker Server environments until the final release.


Linux version: Designed for FileMaker Server

The Linux version of the ACF Plugin is specifically designed for FileMaker Server, not FileMaker Pro. It allows server-side scripts to execute ACF functions — whether triggered by scheduled scripts or via the “Perform Script on Server” script step.

The first release supports

  • Ubuntu 22.04 LTS (Intel x86_64/amd64), Beta 1
  • Ubuntu 22.04 LTS (arm64), – Beta 1
  • Ubuntu 24.04 LTS (Intel x86_64/amd64), Beta 2
  • Ubuntu 24.04 LTS (arm64), Beta 2

Having the plugin installed on the server makes it possible to use ACF functions in server-side scripts — for example, to generate reports, Excel spreadsheets, or perform other automated tasks directly on the server.

For developers, it is still necessary to have the plugin installed locally on their development machines in order to create or edit scripts that use ACF functions. It’s also a good practice to test everything locally before deploying it to the server.

Ordinary users may install the plugin for local use, or rely solely on the server plugin if their solutions only run server-side scripts for those functions that use the ACF-plugin.


Preparing your solution for server-side script execution

When you open a FileMaker solution, a startup script defined in File → File Options → Script Triggers → OnFirstWindowOpen typically handles user interface initialization — setting up windows, layouts, logins, etc.

However, that same startup script also runs when a script is executed on the server via Perform Script on Server. Because FileMaker Server has no graphical interface, these initialization steps are not only unnecessary but can also cause the server script to fail.

To make your solution server-ready, add a conditional check at the start of your startup script:

If [ LeftWords (  Get(ApplicationVersion);1) = "Server" ]
  Exit Script [ “Server environment — skip UI setup” ]
End If
# Other client initialization.

This simple step ensures that when your scripts run on the server, they skip GUI-related setup and focus only on the necessary data operations.


Available NOW: ACF Plugin 1.7.8.5

The ACF Plugin offers nearly identical functionality on both client and server, except for features that depend on the graphical interface — such as dialog boxes or user prompts, which are naturally unavailable on FileMaker Server.

Version 1.7.8.5 introduces several important improvements to stability and namespace handling in multi-user and multi-file environments:

🔄 Smarter package reloading

  • Packages are now only reloaded when their compiled binary has actually changed.
  • If a package is already loaded and the binary is identical, ACF_Compile or any of the ACF_Load... functions will skip reload.
  • This prevents unnecessary reloading and eliminates potential concurrency issues when multiple users or server sessions access the same libraries.

🧩 Namespaces – isolation between databases

  • FileMaker databases no longer share ACF libraries by default.
    Each hosted database now automatically uses its own namespace, based on its FileMaker file name.
  • Shared libraries (packages with no namespace) remain visible to all databases, just as before.
  • If you want multiple databases to share the same ACF packages, you can explicitly assign a namespace using the new ACF_SetCurrentNameSpace() function before loading the packages.
  • For users who need the old setup, can just use ACF_SetCurrentNameSpace("") before loading, making all subsecuent loads shared.

🆕 New namespace-related functions

FunctionDescription
ACF_SetCurrentNameSpace(“NewNameSpace”)Sets the current namespace before loading packages. All subsequently loaded packages will belong to this namespace.
ACF_GetNameSpaceReturns the name of the current namespace in effect.
ACF_ListInstalledPackages(all = true)Returns a list of all loaded packages. If all is true, lists packages in all namespaces; if false, only packages in the current namespace. Useful for checking whether packages are already loaded.

These updates make ACF more predictable and robust when used on FileMaker Server environments with multiple hosted solutions for the same company — while still allowing advanced developers to share libraries intentionally when needed.

🧠 Smarter FunctionID resolution across namespaces

When multiple FileMaker solutions or package versions define the same FunctionID, the plugin now intelligently resolves which version to execute based on the caller’s current namespace:

  • Global FunctionIDs remain compatible — they’re still registered globally and callable via ACFU_FunctionName.
  • If a namespaced package defines a function with the same FunctionID and label as an existing shared/global package, ACF will now prefer the version within the caller’s current namespace.
  • This ensures that newer or file-specific versions of packages are used automatically, even if an older version was loaded first.
  • Shared (non-namespaced) packages continue to behave globally as before.

✅ Result: Opening multiple versions of the same solution no longer causes cross-package FunctionID conflicts — each FileMaker file now correctly calls the version of the function that belongs to its own namespace.

📦 Shared package installation option

The following functions now include an optional boolean parameter isShared:

  • ACF_Compile( sourceText ; DebuggLevel; [isShared] )
  • ACF_CompileFile( path ; DebuggLevel; [isShared] )
  • ACF_Install_Base64Text( base64 ; [isShared] )
  • ACF_InstallFile( path ; [isShared] )

When isShared is true, the package is installed without a namespace, making its functions available globally to all FileMaker databases on the server.
If omitted or false, the package is installed into the current namespace (normally bound to the database file name or the name set with ACF_SetCurrentNameSpace).

✅ Result: Developers can now explicitly choose whether a package is namespaced (isolated to one FileMaker file) or shared (available to all solutions), providing full control over how ACF libraries are distributed and reused in multi-solution environments.


🈺 ACF Translation Functions

The multilingual translation system in ACF uses a translation memory that loads .po or .mo files from either a container field or a file on disk.
When you use the syntax _("Some text"), ACF looks up that text in the active translation memory and returns the translated string.

The ACF function ACF_LoadTranslationPO( containerOrFilePath ) loads these PO or MO files into the translation memory.

🔄 What’s new in 1.7.8.5

Starting with version 1.7.8.5, translation memories are now session-based rather than global.
In previous versions, all processes shared a single common translation memory.
Now, each session has its own isolated memory instance.

This is a significant improvement for server environments—especially when using PSOS (Perform Script on Server).
Server-side scripts must load the relevant PO container to activate translations for that session.
Because each session now has its own translation memory, multiple server scripts can safely run in parallel using different languages—e.g., one in Danish and another in French—without interfering with each other’s translations.


Installing the plugin on FileMaker Server

Installation is straightforward and can be done in two ways: More details about this is in the download available here. The downloads list the Linux versions, but also Mac and Windows Release version for completeness.

NamePlatformDescriptionDownloadDocsMore
ACF-Plugin 1.7.8.5 B1Linux U22 Intel

Beta version for Linux Ubuntu Server ver 22.04 w/ Intel x86 CPU

Download-
ACF-Plugin 1.7.8.5 B1Linux U22 Arm

Beta version for Linux Ubuntu Server ver 22.04 w/ ARM CPU

Download-
ACF-Plugin 1.7.8.5 B2Linux U24 Intel

Beta version for Linux Ubuntu Server ver 24.04 w/ Intel x86 CPU

Download-
ACF-Plugin 1.7.8.5 B2Linux U24 Arm

Beta version for Linux Ubuntu Server ver 24.04 w/ arm64 CPU

Download-
ACF-Plugin 1.7.8.7 ReleaseMac (Intel+Arm)

Just ACF plugin, mac intel + arm

DownloadDocumentation
ACF-Plugin 1.7.8.5 ReleaseMac (Intel+Arm)

Full package, Plugin, examples, compiler, editor bundles, tools

DownloadDocumentation
ACF-Plugin 1.7.8.5 ReleaseWindows

Just ACF plugin

DownloadDocumentation
ACF-Plugin 1.7.8.5 ReleaseWindows

Full package, Plugin, examples, compiler, editor bundles, tools

DownloadDocumentation
  1. Manual installation
    • Copy the ACF-Plugin.fmx file into the server’s Extensions folder.
      /opt/FileMaker/FileMaker Server/Database Server/Extensions
    • Enable the plugin “ACF_Plugin” in the Admin console / Connectors / Plugins
    • Restart the FileMaker Server service to load the plugin.
  2. Script-based installation
    • Go to admin-console / Connectors / Plug-ins
    • Ensure “FileMaker script Engine Plug-ins“, and “Install Plug-in file Script Step” are both enabled.
    • Use the Install Plugin script step from From a script called using “Perofrm script on server” from FileMaker Pro.
    • Restart FileMaker server to have a fresh re-load of the plugin.

Once installed, verify that the plugin is active using the Plug-ins tab in the FileMaker Server Admin Console. You can then trigger the InitACF script on the shared database to load all available ACF packages into memory.


Next steps

We invite all interested FileMaker Server administrators and developers to participate in this Beta. Your feedback will help us fine-tune performance, stability, and Linux-specific compatibility before the final release.

You may also like...