MBS FileMaker Plugin, version 12.5pr1

New in this prerelease of version 12.5 of the MBS FileMaker Plugin:
  • Added algorithm parameter to TOTP.Calculate function.
  • Added command-[ and command-] shortcuts for macOS for text views, so you can indent text of formulas.
  • Added Files.IsReadOnly and Files.SetReadOnly functions for Windows.
  • Added macOS support for CNContact.Show to show contact as popover.
  • Added MongoDB.AbortTransaction, MongoDB.CommitTransaction, MongoDB.InTransaction, MongoDB.StartTransaction and MongoDB.TransactionState functions.
  • Added PhotoPickers functions to show newer image picker on iOS.
  • Changed code folding to collapse If to the next else
  • Changed comment URLs to add current file name for URLs starting with "fmp://$/?".
  • Changed duplicate search for script workspace to skip separators.
  • Changed minimum iOS version for deployment to iOS 12.0.
  • Changed URL comments for ScriptWorkspace to encode unicode characters if needed.
  • Changed XML.ToJSON to better convert single values, which are boolean or number and not just text.
  • Fixed a but in XL.CopySheet, where it failed if the sheet didn't have a name.
  • Fixed a problem in SyntaxColoring.Format function.
  • Fixed a problem in XML.SetVariables and long variable names.
  • Fixed a problem with Claris Pro not loading the plugin.
  • Fixed bug in coloring field names with underscore character.
  • Fixed bug in DynaPDF.AppendImagePage, where we missed last image in a multi image picture.
  • Fixed info.plist for iOS to include version number once again.
  • Fixed issue with our script ID display hiding the script name.
  • Fixed problem in WordFile.ReplaceTag with all = true, where it returned error, but replaced tags.
  • Implemented WebView.ClearSelection for WebKit 2 on macOS.
  • Improved Auto Complete to remove duplicates in MBS function list.
  • Updated DynaPDF to version
  • Updated SQLAPI to version 5.2.2.
  • Updated SQLite to version 3.39.3.
  • Updated to Xcode 14.0.1.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in DropBox folder or ask for being added to the DropBox shared folder.

New shortcut to move text to right

For the upcoming MBS FileMaker Plugin 12.5 we add a new shortcut with Command-] to move the selected text rows to the right by adding one tab. With Command-[, we can remove the tabs.

For some keyboards, the shortcut may be different to press, e.g. with German keyboard layout, you press Command-Option-5 and Command-Option-6 as the [ and ] characters are on the 5 and 6 keys with option key. For French keyboards, you press Command-Option-Shift-) and Command-Option-Shift-( to reach those.

Please try the new function in the next weeks and let us know how it works.

We now have those shortcuts:


MBS FileMaker Plugin 12.4

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


In the last release we already introduced our new component MongoDB which allows you to read and write data in MongoDB using FileMaker. Please have a look at the video MongoDB and MBS - A look under the hood which describes the functionality in more detail. In this release we have added a few new functionalities that should make your work with MongoDB even easier. With the functions MongoDB.CloseCollection and MongoDB.CloseDatabase you explicitly close a database or a collection. Normally you don't need to use these functions because when you open a new database/collection the previously used one will be closed automatically. However, there are cases where these functions are useful. The MongoDB.Rename function is one that some of you may have been waiting for, because you can rename an existing collection and database. With the MongoDB.InsertMany function we can add multiple documents to a collection at the same time. To do this, we specify a JSON array with the information in the parameters. Result sets in a search over a MongoDB database can be stepped through with a cursor. We also have some new functions for the cursor. The function MongoDB.CursorErrorDocument checks if an error occurred while integrating the cursor. If an error occurred server-side, the result is set to the server's reply document with the information about the error. The MongoDB.FindIndexes function fetches a cursor containing documents, each corresponding to an index on this collection. Some MongoDB commands return a "cursor" document. With the function MongoDB.NewCursorFromCommandReply you create a cursor object from the response of such a command.


MBS @ FMTraining.TV - SQL Connections

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.

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 check out the SQL functions in MBS FileMaker Plugin to do a SQL connection to a PostgreSQL database.


Two months until EngageU FileMaker conference

Just two months left until the EngageU conference:

EngageU - FileMaker Conference in Malmö
13th - 15th of November 2022, Malmö, Sweden

A new FileMaker conference for Europe will be held in Malmö at the end of the year. The English-language conference is organized by SquareMoon and ClickWorx, with support from Claris. And we at Monkeybread Software sponsor it, too.

The conference will be held in Malmö, Sweden, November 13-15, 2022. The conference language is English. The target audience is FileMaker developers from across Europe and beyond. More information can be found on the website.

Please join the conference to make it the biggest one ever in Europe!
And it's great reason for people from all around the world to do a business trip to see Sweden (and nearby Denmark). If you plan your trip, the international airport to use is Copenhagen in Denmark and from there a 20 minute train to Malmö central station.

Convert XML to JSON

Do you know the situation? You are good at working with JSON, but the API only gives you XML text? Frustrated you sit there and down your coffee cup in one gulp and are already googling for a possibility to read XML with FileMaker and you know it will take a long time to inform about XML? Well, I can save you the googling, because you can also work with XML texts with the MBS FileMaker Plugin. But this is not the main topic today. The plugin offers you a way to convert XML text to JSON text.

For this we have the function "XML.ToJSON". In the parameters we pass an XML.


MBS Plugin 12.4 for Claris FileMaker

Nickenich, Germany - (September 6th, 2022) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 12.4 for Claris FileMaker 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 12.4 has been updated and now includes over 6800 different functions, and the versatile plugin has gained more new functions:

We continue with our MongoDB functions to add more functionality there: The MongoDB.InsertMany function lets you insert multiple records in one operation. Just pass a JSON with an array of records to insert. The MongoDB.Rename function can rename a collection and MongoDB.FindIndexes can find the indexes. You can explicitly close a collection or database and query the error document for a cursor or create a cursor from a reply.

For our CURL functions we added a CURL.Options function to report all the options you set as JSON. This should help debugging issues with a central way to query what options you set. We got new properties to control mime option flags, a new setting for the maximum life time connection and a property for the SHA256 hash of a SSH Host public key. We enabled zstd support for CURL in case a server uses that for compression.

In the Script Workspace on macOS you can enjoy code folding for blocks. If you select a line with an If or Loop, we show a litte widget on the left to fold the block. The plugin hides the lines. Since FileMaker doesn't notice this, it is not aware of non showing lines. When you save the script or switch to another script, the lines all show again.

For the contextual menu in Script Workspace got new collapse all and expand all commands for the list of scripts. We can find duplicate script names with the "Find Duplicate Names" menu command. In the script area, the contextual menu has hide and unhide commands to hide script lines as needed.

We improved JSON.Import and XML.Import to optionally skip table and field creation. The functions now better report progress for a slow server connection.

This version includes an important fix for IsError not reporting correctly if a MBS function is called in-between a MBS function running, e.g. via Evaluate(). This also fixes ErrorLog reporting the wrong function in that case. We now better cleanup after a server script finished.

If you use our data structures like Matrix and List, we have a new Matrix.Rotate function to rotate a mask. And List.MatchesSubString can walk over a list and look for matches.

We rewrote Files.RevealFile for Windows to select a file, implemented Files.DiskInfo function for iOS, added a RemoteControl.InsertText function for automating inserting text to fields, a DynaPDF.SetRenderingIntent function to set rendering intent for images and a size parameter for GMImage.Hash function. The MapView.ShowAllAnnotations function got a new overlays parameter, a JSON option for PDFKit.GetPDFAttribute function to return all attributes as JSON, a total change count for DirectoryWatcher functions and a DoNotComprMetadata flag for DynaPDF.SetGStateFlags.

Finally we updated CURL to version 7.85.0, DynaPDF to and updated SQLite to version 3.39.2.

See release notes for a complete list of changes.

Neues MBS Plugin 12.4 für Claris FileMaker

6. September 2022 - Monkeybread Software veröffentlicht heute das MBS FileMaker Plugin für Claris FileMaker in Version 12.4, mit inzwischen über 6800 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:

Wir erweitern unsere MongoDB-Funktionen: Mit der MongoDB.InsertMany Funktion können Sie mehrere Datensätze in einem Vorgang einfügen. Übergeben Sie ein JSON mit einem Array von einzufügenden Datensätzen. Die Funktion MongoDB.Rename kann eine Collection umbenennen und MongoDB.FindIndexes kann die Indizes finden. Sie können eine Collection oder Datenbank explizit schließen und das Fehlerdokument nach einem Cursor abfragen oder einen Cursor aus einer Antwort erstellen.

Für unsere CURL-Funktionen haben wir eine CURL.Options-Funktion hinzugefügt, die alle von Ihnen gesetzten Optionen als JSON ausgibt. Dies sollte bei der Fehlersuche helfen, da es eine zentrale Möglichkeit bietet, die gesetzten Optionen abzufragen. Wir haben neue Eigenschaften zur Steuerung von Mime-Options-Flags, eine neue Einstellung für die maximale Lebensdauer der Verbindung und eine Eigenschaft für den SHA256-Hash eines öffentlichen SSH-Host-Schlüssels. Wir haben die zstd-Unterstützung für CURL aktiviert, falls ein Server dies zur Komprimierung verwendet.

Im Skript-Arbeitsbereich unter macOS können Sie jetzt Blöcke einklappen. Wenn Sie eine Zeile mit einem If oder einer Schleife auswählen, zeigen wir ein kleines Widget auf der linken Seite an, um den Block zu falten. Das Plugin blendet die Zeilen aus. Da FileMaker dies nicht bemerkt, ist er sich nicht bewusst, dass die Zeilen nicht angezeigt werden. Wenn Sie das Script speichern oder zu einem anderen Script wechseln, werden alle Zeilen wieder angezeigt.

Für das Kontextmenü im Skript-Arbeitsbereich gibt es neue Befehle "Collapse All" und "Expand all" um Order in der Skriptliste zu öffnen oder zu schließen. Wir können doppelte Skriptnamen mit dem Menübefehl "Find Duplicate Names" finden. Im Skriptbereich verfügt das Kontextmenü über Hide und Unhide Befehle, um Skriptzeilen nach Bedarf auszublenden.

Wir haben JSON.Import und XML.Import verbessert, um die Erstellung von Tabellen und Feldern optional zu überspringen. Die Funktionen zeigen jetzt den Fortschritt bei einer langsamen Serververbindung besser an.

Diese Version enthält eine wichtige Korrektur für IsError, die nicht korrekt gemeldet wird, wenn eine MBS-Funktion zwischen der Ausführung einer MBS-Funktion aufgerufen wird, z. B. über Berechne(). Dies behebt auch ErrorLog, das in diesem Fall die falsche Funktion meldet. Wir räumen jetzt besser auf, nachdem ein Server-Skript beendet wurde.

Wenn Sie unsere Datenstrukturen wie Matrix und List verwenden, haben wir eine neue Matrix.Rotate Funktion, um eine Maske zu drehen. Und List.MatchesSubString kann eine Liste durchlaufen und nach Übereinstimmungen suchen.

Wir haben Files.RevealFile für Windows neu geschrieben, um eine Datei auszuwählen, die Funktion Files.DiskInfo für iOS implementiert, eine Funktion RemoteControl.InsertText zum automatisierten Einfügen von Text in Felder hinzugefügt, eine Funktion DynaPDF.SetRenderingIntent, um den Rendering Intent für Bilder festzulegen und einen Größenparameter für die Funktion GMImage.Hash. Die Funktion MapView.ShowAllAnnotations erhielt einen neuen Overlays-Parameter, eine JSON-Option für die Funktion PDFKit.GetPDFAttribute zur Rückgabe aller Attribute als JSON, eine Gesamtänderungszahl für DirectoryWatcher-Funktionen und ein DoNotComprMetadata-Flag für DynaPDF.SetGStateFlags.

Schließlich haben wir CURL auf Version 7.84.0, DynaPDF auf, SQLAPI auf 5.2.1, LibXL auf 4.0.4 und Xcode auf Version 13.4 aktualisiert.

Alle Änderungen in den Release Notes

Store containers in a MongoDB

Recently a client tried our MongoDB functions in MBS FileMaker Plugin. They asked us how to store binary data in the MongoDB in an efficient way. For example that may be a picture in a container field in their FileMaker database. While we can store Base64 or Hex encoded data as text in a text field, we prefer to store it as binary data to save space.

MongoDB has a binary data typein BSON to store various things. This includes several sub types like the binary version of UUID, MD5 hashes, encrypted data, compressed time series data or generic binary data. The UUID version for example uses only 16 bytes instead of 36 characters for the text representation.

We can use the binary version by passing a JSON object as value which contains $binary and that has a JSON object with two keys: subType and base64. We can create such a JSON easily in FileMaker with either the built-in JSON functions or the MBS functions. The sub type is just a decimal to specify the type and we pass zero for this value. The base64 field receives the base64 encoded data of our image. We pass it in the JSON base64, but the MongoDB will store it in binary way, so our encoding here is just for the transfer between FileMaker and the MBS FileMaker Plugin. It will go over the network connection in the binary form.

Let's add a record with the following script. First we build the json as required: (more)

FileMaker Week in Rome

Our FileMaker friends in Italy have a conference this fall:


Conference, Training, experimentation, sharing, history, culture,
fun and networking all on one single event 100% FileMaker​

See mettilealialtuosviluppofilemaker.com

We hope to meet a lot of developers from Italy there.
Maybe I get a bit of time to present something. In that case, what would attendees like to see?

If you can't make it to Rome in October, how about Malmö in November?

MBS FileMaker Plugin, version 12.4pr5

New in this prerelease of version 12.4 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/


Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
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