Our Blog, FileMaker only, Xojo only, Archive (older)     Follow us on Twitter, Xing, LinkedIn or Facebook.

Transparent WebViewer

You know a web viewer showing white background?

If you use WebView.SetDrawsBackground function with next MBS FileMaker Plugin, you can disable it and turn the web viewer into transparent mode:

So far transparency works on macOS and iOS and may help you to design improved JavaScript-based controls.
Coming soon with next pre-release.

FileMaker Konferenz 2022 in Hamburg

Vom 22. bis 24. Juni 2022 findet die elfte deutschsprachige FileMaker Konferenz in Hamburg, Deutschland statt. Das JUFA Hotel Hamburg HafenCity liegt direkt neben dem Ausgang der U-Bahn Station HafenCity Universität, nur drei Stationen vom Hauptbahnhof via U4, so dass sich die Anreise per Bahn empfiehlt. FileMaker Anwender und Entwickler können ihre Teilnahme bald buchen.

Möchten Sie Sponsor oder Sprecher werden?
Aktuell sucht der FMK Verein Vorschläge für interessante Vorträge.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2022 rund 180 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 25 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.

Gibt es Interesse an einem MBS Plugin Workshop am Tag vor der Konferenz?

MBS FileMaker Plugin, version 11.5pr2

New in this prerelease of version 11.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Use text fields for numbers

Due to current events in an office nearby, here again an announcement announcement for all database developers:
Please treat the following numbers as text for processing and storing in a database.

Zip codes
While we call them zip numbers in Germany and they are just five digits here, a zip code may contain various other characters like letters, spaces and dashes. e.g. "SW1A 1AA" is a valid zip code in the United Kingdom. The length of post codes may be over 10 characters in some places and contain leading zeros. In Argentina even a plus may be used like "46C2+32".

Invoice Numbers
The number on an invoice, an offer or an order often has a scheme defined by the used software. Some companies use dashes to separate sections of the number like year-branch-number to give each shop branch their own running count for invoices. We have seen invoices numbers with prefix or postfix to indicate branches or types of invoices. (more)

Calculate Text Sizes

Sometimes you may want to know how much text fits a certain space or reduce text to fit. The common problem is that you have a long text like "Johannes Zimmermann" and the field is too small to fit the whole text. Then FileMaker may only show "Johannes" and the whole surname wraps to second line.

Our plugin can help and offers a few functions related to fonts. For example Font.CalculateTextWidth can calculate the length of a text in points, so you know whether text will fit.

MBS( "Font.CalculateTextWidth"; "Hello World"; "Arial"; 12 )

Your calculation may for example detect that the whole name doesn't fit. But maybe "Mr. Zimmermann" fits and then you may use that one.

Now if you like to know whether text will fit in height, you can use Font.CalculateTextHeight functions.

MBS( "Font.CalculateTextHeight"; "Hello World. Just a test."; 100; "Arial"; 12 )

This would use 100 points as wrap limit, so we get a second row of text. The height returned here should be something like 36 points. The actual numbers are not identical for macOS and Windows since both OS have their own way of anti aliasing and get different sizes for various letters, even for the same font.

The third function Font.CalculateTextFits will take a text and return the number of characters, that fit in a given space.

MBS( "Font.CalculateTextFits"; "Hello World"; 50; "Arial"; 12)

This may return 8 here as 50 points don't fit the full text "Hello World", but only "Hello Wo". Your script may then decide to cut two more characters and put in three dots.

A specialty is that the font parameter can be a font name specifying the exact font if needed on macOS. Since Arial bold has a separate font file called Arial-BoldMT, you can specify that to pick the bold font.

MBS FileMaker Plugin, version 11.5pr1

New in this prerelease of version 11.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

New in MBS FileMaker Plugin 11.4

In this article I want to introduce you the new functions from the MBS FileMaker Plugin in version 11.4.


Let's start with the new features in the Dictionary component. Here you can now filter the keys by their beginning or their end. With the function "Dictionary.KeysWithPrefix" you can now get a list of all keys that have a specific beginning. You may have entries like "person.123.firstname" and "person.123.lastname" and by using Dictionary.KeysWithPrefix you can look for "person.123." to find all keys starting with this prefix. The opposite is the case with the function "Dictionary.KeysWithPostfix". In this case the keys are filtered by their end. So, in the previous example, we could filter by .firstname and get "person.123.firstname". The postfix and prefix keys functions allows you to organize things in the dictionaries with e.g. dot notation.


With the new function SQL.FieldExists you can check if a given field exists that we want to query. To do this, we specify the command reference number and the name of the field in the parameters. If the field exists, we get 1 as return value.


Teamviewer installation for remote support

We like to explain everyone how to setup TeamViewer on macOS for remote support.

Go to teamviewer.com and download the Teamviewer app, e.g. teamviewer.dmg. As far as I see you can directly click download on the cookie dialog and then close the website, but the webdesign may change. No need to allow cookies!

Once downloaded, you open the disk image.

Please make sure the domain shown in the GateKeeper dialog is only www.teamviewer.com and nothing different.


The magic of our XML.Import function

A client got a bit xml file from Swiss government with a list of all registered/permitted medications. A huge XML file with thousands of entries. In order to import those easily, we use our XML.Import function in MBS FileMaker Plugin.

We copied the XML Import example database included with our plugin to desktop. We copied the xml file to desktop and renamed it test.xml. Then we open the database and run the script. Since we didn't change it, it will simply look for a file named test.xml and import it. Since the XML file is 50 MB, this takes a while, but the XML.Import function creates 18 new tables with a lot of fields:

The example has "Import2" as prefix for reasons, but you can change that. We got over 130000 records created within a minute.

The client asked how to get the ID from preparations into the other tables like the Pack table. But then we surprised our client with the magic of FileMaker's relationships. We connect the right parent entries to the UUID field of the parent table. Once all tables are moved in place and all connections are made, the graph looks like this:

As you see limitations table got duplicated, so we can connect it both to preparations and packs.

Once this is setup, we create layouts. A layout for a pack can now show fields from preparation to show which preparation it belongs to.
Also via all that relationships, the table for a preparation can show the first pack, substance and price on the same layout.

Let us know if you have questions and enjoy the magic of those functions.

MBS @ FMTraining.TV

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We talk a bit about what's new in MBS FileMaker Plugin in version 11.4 and answer user questions.

Do you like this video?

Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for 2021.

MBS FileMaker Plugin 11.4 - More than 6500 Functions In One Plugin

Nickenich, Germany - (September 7th, 2021) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 11.4 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for Claris FileMaker produce line. As the leading database management solution for Windows, macOS, iOS and the web, the Claris FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 11.4 has been updated and now includes over 6600 different functions, and the versatile plugin has gained more new functions:

We updated our WordFile functions to store the resulting word file into a container instead of a file with the new WordFile.WriteContainer function. You can substitute any text in the word file with WordFile.Substitute function or check whether some text is there with WordFile.Contains function.

In this release we add thread pooling for Windows. This highly benefits some functions using threads like e.g. CURL.PerformInBackground. We can reuse threads and lower the memory footprint.

If you have to read plist files on macOS, please check our new PList functions. We return content as JSON and also allow to write back those plist files.

Our SendMail functions got an upgrade to produce S/MIME signed emails with new SendMail.Sign function. For this we also added new PKey.ReadFromContainer function to read in private keys to sign.

For iOS we added SharingPanel functions to run the sharing dialog for sending text, files, pictures or URLs to other applications or services, e.g. AirDrop.

We got a new function Container.Screenshot to take snapshots for WebViewer controls. But this function can also be used for all other named controls on a layout to snapshot content like pictures of text fields.

For DynaPDF we got new functions to set printer settings via new DynaPDF.Print.SetSetting function. You can check whether an input PDF is a tagged one with the new DynaPDF.GetInIsTaggedPDF function.

For macOS you can now have the plugin prevent closing the database design dialog while relationship tab is selected. See SyntaxColoring.DontOpenManageDatabaseDialogWithRelations.SetEnabled function to enable it.

We improved errors printed into trace log, got new SQL.FieldExists and SystemInfo.isWindows11 functions, allow backslash for escaping paths in XML.GetPathValue function and added HEAD as verb for CURL.SetupAWS and CURL.SetupOAuth functions.

Finally we updated CURL library to version 7.78.0, DynaPDF to and SQLAPI to 5.1.5.

See release notes for a complete list of changes.

Neues MBS FileMaker Plugin 11.4

7. September 2021 - Monkeybread Software veröffentlicht heute das MBS FileMaker Plugin für FileMaker in Version 11.4, mit inzwischen über 6600 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:

Wir haben unsere WordFile Funktionen aktualisiert, um die resultierende Word-Datei mit der neuen Funktion WordFile.WriteContainer in einem Container statt in einer Datei zu speichern. Sie können jeden beliebigen Text in der Word-Datei mit der Funktion WordFile.Substitute ersetzen oder mit der Funktion WordFile.Contains prüfen, ob ein Text vorhanden ist.

In dieser Version fügen wir Thread-Pooling für Windows hinzu. Dies kommt einigen Funktionen zugute, die Threads verwenden, wie zum Beispiel CURL.PerformInBackground. Wir können Threads wiederverwenden und den Speicherbedarf verringern.

Wenn Sie Plist-Dateien unter macOS lesen müssen, probieren Sie bitte unsere neuen PList Funktionen. Wir geben den Inhalt als JSON zurück und wir können auch JSON als Plist-Datei ausgeben.

Unsere SendMail Funktionen haben ein Upgrade erhalten, um S/MIME-signierte E-Mails mit der neuen Funktion SendMail.Sign zu erzeugen. Dazu haben wir auch die neue Funktion PKey.ReadFromContainer hinzugefügt, um private Schlüssel zum Signieren einzulesen.

Für iOS haben wir SharingPanel Funktionen hinzugefügt, um den Sharing Dialog zum Senden von Text, Dateien, Bildern oder URLs an andere Anwendungen oder Dienste, z.B. AirDrop zu übergeben.

Wir haben eine neue Funktion Container.Screenshot, um Schnappschüsse für WebViewer-Steuerelemente zu erstellen. Diese Funktion kann aber auch für alle anderen benannten Controls in einem Layout verwendet werden, um Snapshots von Inhalten wie z.B. Bilder von Textfeldern zu erstellen.

Für DynaPDF gibt es neue Funktionen zum Setzen von Druckereinstellungen über die neue Funktion DynaPDF.Print.SetSetting. Mit der neuen Funktion DynaPDF.GetInIsTaggedPDF kann überprüft werden, ob ein Eingabe-PDF ein getaggtes ist.

Unter macOS kann das Plugin nun verhindern, dass der Datenbank-Design-Dialog geschlossen wird, wenn die Registerkarte Beziehung ausgewählt ist. Siehe SyntaxColoring.DontOpenManageDatabaseDialogWithRelations.SetEnabled Funktion, um dies zu aktivieren.

Wir haben die Ausgabe von Fehlern im Trace-Log verbessert, neue Funktionen SQL.FieldExists und SystemInfo.isWindows11 eingeführt, Backslash für das Escaping von Pfaden in der Funktion XML.GetPathValue zugelassen und HEAD als Verb für die Funktionen CURL.SetupAWS und CURL.SetupOAuth hinzugefügt.

Schließlich haben wir die CURL-Bibliothek auf Version 7.78.0, DynaPDF auf und SQLAPI auf 5.1.5 aktualisiert.

Alle Änderungen in den Release Notes.

MBS FileMaker Plugin, version 11.4pr5

New in this prerelease of version 11.4 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

MBS FileMaker Plugin, version 11.4pr4

New in this prerelease of version 11.4 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

WebView2 support coming for MBS Plugin

As you may know Claris switched the engine for WebViewer on Windows. Instead of Internet Explorer they now use the WebView2 component from Microsoft for FileMaker 19.3. Sadly we didn't get our plugin to work with this Edge/Chromium engine for FileMaker 19.3.

But we like to let you know that we work on a fix with Claris. With a little help from them, the plugin can actually get the reference to the WebViewer. For a future plugin version we can get our WebView functions to work with WebView2. But this change on Claris' side requires an update to FileMaker Pro, so this won't work for FileMaker 19.3, but for the next version after this, let's name it 19.4.

We look forward to the fall with a new FileMaker Pro release for Windows to have you all try the new functions.

Be aware that the Chromium/Edge as engine may behave a little bit different, so you need to test all scripts. And we may have a few new functions for WebView2 specific. Since WebView2 component gets regularly updated, you may need to have a recent version installed to use all plugin functions as some require a recent version, e.g. one from 2021 instead of the one from 2020.

If you like to try it soon, you may want to join Claris ETS (external testing service) and get early access to future FileMaker versions. Otherwise wait for the release, probably in fall 2021.

MBS FileMaker Plugin, version 11.4pr3

New in this prerelease of version 11.4 of the MBS FileMaker Plugin:
  • Added SendMail.Sign function to send S/MIME signed emails.
  • Added PKey.Read, PKey.ReadFromContainer and PKey.ReadFromFile functions.
  • Changed SendMail functions to cache email source and not render it again each time you query it. And clear it when you change a property of the email.
  • Fixed problem with menu functions on Windows not drawing disabled menu entries in gray when using font styles.
  • Fixed problem in PDFKit.GetPDFAttribute returning an error when no keywords are available.
  • Fixed a problem with menu functions on Windows to better measure space needed.
  • Fixed a problem with menu functions on macOS not showing diamond or bullet checkmarks.
  • Added error message when tracing script calls and logging errors.
  • Added password parameter for PKey.Read function to read encrypted private keys.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Bug Bounty Program

We are happy about any bug report we get, so we can fix it. But since we got asked if we pay bug bounty, let me explain:

In the past we paid bug bounties for valuable information about vulnerabilities on our products or website.
We haven't put up a website like CURL project here, but we may formalize it more in the future.

To give a few examples for the websites:
  • You can read a file you shouldn't see.
  • You circumvented the CMS login. Create a new article with your name as proof and contact us.
  • You can write a file to our web server, e.g. write a text file with your name and contact us.
  • You can execute code own our web server, e.g. run ls -al and show us the output.
  • You can run SQL on our database servers.
For our products:
  • Have you be able to crash an app with bad input data? Especially if that could lead to stack corruption and thus execute input data as code.
  • Have you found a way, where you can do a SQL injection?
  • Have you found a way to circumvent a login or security privilege checking?
  • Have you found a way to circumvent our license checks?
We may extend this list with new examples.

Please note that not all crashes are a vulnerabilities, some things got reported before, may be caused by code not from us (open source libraries) and not all vulnerabilities can be exploited.
If you have something, please contact us.

FileMaker Meeting in Canada

As I am traveling to Calgary in Canada next month, I like to arrange a FileMaker developer meeting.

Let's talk about FileMaker, conferences, plugins and other programming topics.

Please help to decide on the exact day: Calgary Meeting - Edmonton Meeting

As we have FileMaker users in both cities and around them, we may do both events. Please mark your availability in the surveys above. If you could drive to both cities for a meeting, you can put yourself into both surveys. Feel free to contact us if you have questions.

We can reserve a table in a nice restaurant in Calgary and Edmonton and talk an evening about FileMaker. Time probably around 18 to 22 o'clock, so you can come later or leave early.

Once I set a date and pick a place, we'll contact everyone own the list with the details. I hope to see you all there!

Update: The date is Tuesday, 14th September 2021 for Calgary.
If you like to join, please contact us to get on the guest list.

Kentuckiana FileMaker Developers Group

We got a recording of the meeting for the Kentuckiana FileMaker Developers Group from 27th July 2021, where I presented a few examples coming with MBS Plugin.

Watch it on YouTube.
I was very happy to have them schedule their meeting for lunch time, so I could join live at evening time in Austria, right from our little hiking vacation. Enjoy the video and let us know if you have ideas or questions about our plugin.

Trigger scripts via plugin and fmplugin extended privilege

Recently more people updated to FileMaker versions 19.2 and 19.3. On support calls, we see more complains about plugins no longer calling scripts or doing SQL properly.

If you turn on Trace logging, you may see for example:

Start Script "DragAction" in file "DragTest" with control Pause
Parameter: 31001
Current file: "DragTest". User "Christian" on host "DESKTOP-CK2F9O6"
Result: 825 (File is not authorized to reference the protected file)

So when you see error 825, then this is a permission issue. With FileMaker version 19.2 Claris introduced the fmplugin extended privilege. Old files don't have this, so script triggering is allowed for the plugin. But if the file is new, it gets a fmplugin extended privilege. And if that one is not checked, the script trigger is forbidden. But you can mark the checkbox to allow all plugins.

Or you add a specific fmpluginMBSP to only allow MBS Plugin. And you may define this for all or some privileges, so some user may use plugin and some not.

If you are interested in limiting functionality of MBS Plugin for users, feel free to limit functions with Plugin.SetFunctions call. Or limit functions to certain scripts/file/privileges, check the Plugin.LimitFunction function. If you like to know what functions you use, check the Plugin.UsedFunctions function and run it after the solution has been used for a day or so.

See also Tracing MBS Filemaker Plugin, DbgView for watching trace messages live on FileMaker Server, Watching for Errors with MBS Plugin and About controlling plug-in access between files.

Older blog entries:

2021-08-20 Claris Engage Beyond 2021
2021-08-11 MBS FileMaker Plugin, version 11.4pr2
2021-08-02 MBS FileMaker Plugin, version 11.4pr1
2021-07-28 FileMaker Server 19.3.2 release
2021-07-27 New in MBS FileMaker Plugin 11.3
2021-07-25 Identify plugin version and platform
2021-07-23 Plugin License Decision Graph
2021-07-21 FileMaker 19.3.2 release
2021-07-16 FileMaker Stammtisch Liechtenstein in Malbun
2021-07-16 MBS FileMaker Plugin videos on YouTube
2021-07-14 FileMaker Magazin - MBS Artikel
2021-07-13 Common problems loading a dynamic library on macOS
2021-07-12 MBS FileMaker Plugin 11.3 - More than 6500 Functions In One Plugin
2021-07-12 Neues MBS FileMaker Plugin 11.3
2021-07-09 MBS FileMaker Plugin, version 11.3pr7
2021-07-08 Transitioning scripts for WebView2
2021-07-06 MBS FileMaker Plugin, version 11.3pr6
2021-07-03 MBS @ FMTraining.TV
2021-07-02 Things you can do with DynaPDF
2021-06-30 Claris Engineering Blog


Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed

Start Chat