Summer Software Update

Megan Jackson

The next round of updates to Forms On Fire is here – say hello to our Summer Software Update!


This update involves a lot of improvements in the formula engine which drives so many dynamic scenarios across your apps. A number of new formula functions are added and several others upgraded. Beyond this, new formula capability has been introduced into several new areas of the platform to allow you to build ever more customized app experiences.


Other areas are upgraded along with a long list of minor fixes and improvements outlined below.


The new release of the mobile app will be available on Android within days and iOS in about a week. These changes have been in use under production scenarios for a couple of months and have been found to be extremely useful and stable.

Formula Engine Improvements

This release includes a new set of List functions dedicated to gathering and working with lists of values – e.g. summing up a list of Form field answers matching a given pattern. This will make many scenarios much simpler to implement, such as scoring or weighting cases where many survey questions need to be summed or counted for an overall score. To this end, the following List specific functions have been added:


  • LIST(pattern, filter)
    Collects answers from fields with data names matching the given regular expression pattern. List results are typically used with functions like SUM()/COUNT() to calculate results on fields that follow a common naming convention – e.g. survey fields like q1, q2, q3 etc.
    The second optional parameter applies a filter formula to the answers gathered, leaving only answers that pass the condition.
  • TOLIST(value, filter)
    Converts the given value to a List. The value must be text containing delimited List elements – e.g. 34|76|9 – while an optional filter formula can also be specified.
  • IN(value, list), NOTIN(value, list)
    Searches the given List for the given value, returning a true/false result.
  • COUNT(list), SUM(list) AVERAGE(list), MIN(list), MAX(list)
    Returns an aggregate result based on a List of values. These functions previously only worked with repeat page/Table use only, now List results are also supported.
  • FIRST(list/repeatfield), LAST(list/repeatfield)
    New functions which return the first or last value of a given List of values or repeat field answers.


Also added/improved are the following miscellaneous formula functions:


  • PRIOR()
    Returns prior answer value(s) for a Form field within a repeating Page and/or Table field.
  • DEVICENAME(), DEVICEOS(), DEVICEOSVERSION()
    Provides access to device environment info
  • APPVERSION(), SCREENVERSION(), SCREENDATE()
    Provides info about the current app and screen version
  • VAL()
    Returns the currently stored answer value of the given field, useful for avoiding circular loop issues
  • CONTAINS()
    Returns true/false based on whether a text value is found within another text value
  • INDEXOF()
    Returns the zero-indexed position of a text value within another text value
  • FORMAT-NUM()
    Now supports an optional 3rd parameter which lets you specify the desired format. This should help European and other clients who format decimals using comma instead of period characters.
  • All DS functions
    All Data Source (DS) formula functions now support Form field references within filter formulae
  • All Repeat/Table functions
    Several improvements have been made to ensure POSITION() and aggregate functions like COUNT() evaluate/refresh correctly when a repeat/row is added/deleted.


All of the above formula functions now appear in the next few days on the Formula Builder dialog of secure.formsonfire.com, available for use with our mobile apps soon.

Detail Screen Upgrades

The Detail screen type now has a lot more options for customization, including:


  • Text and background styling options for all detail row lines
  • Ability to embed formulae in static text of Labels and Detail positions in detail lines
  • New Visibility option to apply conditional display of detail lines based on a true/false formula result
  • New button functionality around detail line user interactions. Allows you to specify a button, text and/or icon combination to be displayed on the right hand side of your detail line.
  • Support for referring to columns by name (instead of by index number) in formulae

Listing & Mapping Screen Improvements

  • Listing & Mapping screen types now have a default filter formula option in the designer. Previously, filtering formula could only be passed into these screens to filter data rows displayed. Any incoming filter formula parameters will override a default filter formula.
  • Mapping screen now remains zoomed at the level/position when the user returns to a Mapping screen after navigating forward to another screen. If you’ve tried our Sales Demo form, you will like this improvement a lot.
  • Background synchronizations of the app do not reload Listing or Mapping screens if the user is interacting with the screen.
  • Various fixes to Listing screen reloads as well as improvements to memory use around thumbnail images on Android devices.
  • Support for referring to columns by name (instead of by index number) in formulae

Form Screen Improvements

  • New “Always Trigger On Button Press” option on Action fields in Form designer.
    By default, buttons only trigger dependent formulae once; on the first time a user taps. This new option allows you to specify that formulae must be triggered every time the button is pressed. This is useful for scenarios such as counters/clickers where a number increases/decreases on each click. (e.g. you could increase a Number field every time an Action button is pressed by using a Dynamic Value formula of:
    IF(NOTBLANK({{button}}), VAL(‘numfield’)+1, 0) ).
  • Action fields now also set their answer to be the title of the pressed button by default. This is useful for cases where you have multiple buttons in a field and need to run formulae based on which button was pressed.
  • Bind to Data Source functionality now provides un-ambigious binding to selected row of a specific Choices/Data Source field, thus allowing multiple rows from the same Data Source to be updated at once within a Form.
  • Added an option to customize the “Add New Row” button of a Table field in the Form designer.
  • New Auto-Complete Pattern option on Choices fields in the Form designer – allows you to specify a custom regular expression for the app to use when matching user typed keywords against Choices rows.

Form Entry Editing

There are cases where Form entry data is incorrectly captured by an app user and thus needs to be updated. Adding the ability to edit Form data on the secure website after it’s been uploaded. Users receive this ability via a new “Edit Data Entries” permission on the Edit User page of the secure website. Once granted permission, users will see an edit link on the View Entry page (accessed via the Data area -> select Form -> roll over entry row to select view entry).

personal details
entry field

THIS FORM ENTRY EDIT FUNCTION HAS SIGNIFICANT LIMITATIONS. THOUGH IT IMPLEMENTS CERTAIN FIELD FUNCTIONALITY, INCLUDING DROP-DOWNS, DATES AND NUMERIC ENFORCEMENT, THIS EDIT FUNCTION DOES NOT INCLUDE MUCH OF THE BUSINESS LOGIC YOUR SCREENS MAY CONTAIN. CASCADING DROP-DOWNS, FOR EXAMPLE, ARE NOT SUPPORTED. CALCULATED FIELDS ARE ALSO NOT SUPPORTED. PLEASE USE THIS CAUTIOUSLY AND ENSURE ANY UPDATES TO A SINGLE FIELD, WHICH TYPICALLY EFFECT OTHER FIELDS, MAY VIOLATE THE INTEGRITY OF YOUR FORM (E.G. QUANTITY TIMES PRICE EQUALS TOTAL – IF YOU UPDATE QUANTITY, BE SURE TO UPDATE TOTAL FIELD AS WELL.)

Other Improvements and Fixes

On the app side:


  • New “Refresh Screen” user interaction option – useful for giving users a button to force a screen refresh (e.g. to load up thumbnail images in a Listing screen).
  • Improved validation of numeric inputs in Number field
  • Improvements to Android memory management of images
  • Improvements to background sync, particularly around parallelizing Data Source row downloads and supporting compression on Hosted GET calls.
  • Improvements to read-only state of media type Form fields, allowing visibility and zoom of images but no editing when read-only.
  • User meta-data changes now sent on every app sync, instead of only at app login.
  • Fixes to scenario-specific cases on iOS where visibility of Form fields was not working correctly
  • Fixes to issues with certain text operations on devices running certain foreign culture and language
  • Fixes to crashes resulting from scenario-specific user filters on Listing/Mapping screens
  • Fix for AM/PM changes on Time fields not triggering formula updates
  • Fix to crash bug when Form entry is Tasked directly back to the same user as part of a Process Step


On the website/platform side:


  • Added “Bind to Global Value” option to hidden Form field types
  • New option to disable the default behavior of appending random text characters to the names of files generated from Form connectors
  • GeoOp data source connector now supports custom query filtering – e.g. to return only active jobs instead of all
  • SharePoint and Box connectors are no longer in Beta status. More upgrades for SharePoint are planned, particularly around inserting/updating rows in SharePoint Lists.
  • Removed case-sensitivity on email address for user (re)activations


Please provide us with your feedback on these changes, particularly from clients whose main ideas went into these changes. A great way to start the summer!


By Megan Jackson | June 9th, 2016 | Platform Updates


Share by: