2024.5 (May 2024)

2024.5 (May 2024)

2024.5 Release Highlights

This month’s release is full of tweaks and improvements to the Fuuz platform, including two Schema Designer features we’re excited to share: one small quality of life change and one large roadmap item. Read on to learn more!

Cascade Deletion: Field Deletion Reference Behavior

The May 2024 release includes a significant new feature in the schema designer: the ability to specify deletion behavior for reference fields! This new configuration field will appear in the screen designer on the “source” or “one” end of a relation, and allows app designers to specify what behavior they want to occur for this model when related data is deleted.

image-20240507-175422.png
Deletion Reference Behavior configuration field on a relation

We’ll use the following example schema for the rest of this section: Inventory, which has a required InventoryStatus relation and an optional MasterUnit relation. We’ll use the following hypothetical scenario to illustrate how the new configuration options behave:

Inventory number 00001 is linked to Master Unit number A. A user tries to delete Master Unit A.

image-20240507-180729.png
Example Inventory schema for this section.

This new configuration option comes with four settings:

  • Prevent: If there is related data, prevent deletion and throw an error explaining why deletion can’t proceed. In the hypothetical scenario described above, a user would receive an error saying The document cannot be deleted. It is referenced by an Inventory with number 00001. This option is the default when not specified, and matches the behavior of the schema system prior to the release of this feature. You’ll typically want to use this option in cases where both related models capture important data that needs to be retained with referential integrity, such as types, statuses, and master data - like the inventoryStatus relation in the example schema above.

  • Cascade: If there is related data, attempt to delete the related records. This will check all the relations on the related model, potentially cascading to further models depending on their deletion reference behavior. In our hypothetical scenario, both Master Unit A and Inventory 00001 would be deleted. You’ll typically want to use this option in cases where the relation represents a hierarchical “parent/child” structure in the data, where the one model is meaningless without the context of the other. One example might be a Customer and related Customer Address records: without the Customer, a Customer Address is useless, and it makes sense to delete related Customer Address records automatically when a user deletes a Customer.

  • Set Null: If there is related data, attempt to set the relation ID field to null, thereby removing the relationship. In our hypothetical scenario, Master Unit A would be deleted, and Inventory 00001 would be updated to set the masterUnitId field to null, removing it from any master unit. This option only makes sense for optional references; if a reference is required, this option will cause any attempted deletion to fail. You’ll typically want to use this option for cases where data is loosely related, like a default value.

  • Ignore: If there is related data, simply ignore the relation and proceed with deletion. In our hypothetical scenario, Master Unit A would be deleted, but Inventory 00001 would retain a reference to the deleted record, which would result in warnings any time a screen or user tries to query master unit information related to Inventory 00001. You’ll only want to use this option in scenarios where your application can gracefully handle those broken relations; it generally applies to history, log, or transactional models which might otherwise be set to Cascade. Setting the deletion reference behavior to Ignore instead allows you to retain those history records and the ID of the previously related data for audit or reporting purposes, even though the data they used to relate to may be deleted. Use this option with care!

As mentioned above, the Cascade option will continue to check related models until all either all related data is deleted, set null, or ignored, or until a relation set to Prevent is found, in which case the entire delete operation will fail.

This new feature will enable app builders to streamline the data management process for end users, permitting easier cleanup of related data more flexibility in app behavior. It also lays the groundwork for similar enhancements to the Create and Update mutations, which might allow creating or updating related data with a single mutation. We’ll be applying these deletion reference behavior options to our own internal system data models over the coming months, as well!

More Highlights

This month’s release also includes a smaller quality of life feature for the Schema Designer. Fields that relate to other data models are now displayed as clickable links in both the diagram and field list; clicking those links will pull that data model into the diagram if it’s not already added, and then select it. This streamlines the process of “expanding” a diagram and navigating between related models to understand the overall structure of your data!

Schema Designer Field Links.gif
Clicking data model links on schema fields adds the related model to the diagram.

Full Release Notes: 2024.5.0

Data Team

GraphQL APIs

  • Added support for cascade deletion behavior on data model relations

  • Corrected description for Float Format setting

Schema Designer

  • Added links to diagram fields to open related models

  • Added validation to ensure field names start with lowercase letters

Security

  • Updated user reactivation to reset user’s inactivity-based expiration

  • Updated user reactivation to send an email to notify the user their account was reactivated

  • Added a Default flag to identity providers to streamline user creation

  • Added an Integration tenant type to handle internal and external integrations

DevOps Team

Cluster Infrastructure

  • Added a global default policy to clean up abandoned queues

  • Upgraded core services to Redis 7, RabbitMQ 11, and MongoDB 6

Integration Team

Device Gateway

  • Added support for building the Device Gateway for Linux and in containerized environments (e.g. Docker)

  • Updated OPCUA driver configuration schema to allow connecting to a device without authentication

  • Updated OPCUA driver to apply a maximum number of connection retries on startup

  • Updated TCP driver to not attempt to connect with the device is marked as inactive

  • Updated ENIP PLC library to prevent a potential crash when the TCP connection breaks

Integration Platform

  • Updated HTTP connector to utilize a Fuuz-internal HTTP request library for better security and error handling

  • Added a connector for TecCom Web Services

Orchestration Team

Script Editor

  • Updated JSONata version to address a security vulnerability

Data Flow Designer

  • Added validation to prevent excessively large payloads from being saved in flow nodes

  • Updated flow designer to correctly update internal state after using the Edit Properties file menu option

Package System

  • Updated module assignments on custom mutations to clarify permission errors during package installation

User Interface Team

Framework

  • Updated drawer menu to only display if a user is assigned at least one role with a menu or home screen configured

  • Corrected help/documentation links to point to https://community.fuuz.com

  • Updated system to clear some portions of the application state when changing tenants to address a number of edge cases that could occur

Screen Designer

  • Updated Cards element to support filter form configuration, matching existing system for tables

  • Corrected an issue causing the “newer version” indicator to pop up for screens that haven’t been saved yet

  • Corrected an issue with the field picker when used with data models from the System API

  • Corrected an issue causing the Save New Screen dialog to display when the New file menu option was used

  • Updated Tab Bar component to use the Icon Picker rather than separate properties for icon color/variant

  • Updated action buttons to not display the default icon when the icon field is cleared

  • Corrected a display issue that would occur when increasing the Default Width on a Resizable Panel element

  • Corrected a display issue that would cause the screen designer’s properties panel to be pushed off the side of the screen rather than shrinking

    • Related Articles

    • 2025.5 (May 2025)

      Plex SQL Connector Deprecation: With the 2025.5 release, the Plex SQL connector will be deprecated. The connector will be removed in an upcoming release. Please migrate any integrations using this connector over to the ODBC connector using Plex’s ...
    • 2023.5 (May 2023)

      2023.5 Release Highlights After last month’s large release, the 2023.5 Fuuz platform release is a little quieter, but there are still some significant new features. Here are the major highlights: In-App Gateway Updates The past several releases have ...
    • Switching Tenants and Apps

      Switching Tenants and Apps In many cases, Fuuz customers will have multiple Tenants within their Enterprise. For example, every Fuuz Customer should have at a minimum, their “Admin” Tenant - which is where your Fuuz system administrator will do ...
    • 2020 Q4 MFGx Release Notes v3.23.0 (11/5/2020)

      MFGx.io v3.23.0 Frontend Framework: Updated logo  Framework: Added filter to remove routes with blank paths  Framework: Added computed label to data flow deployments  Orchestration: Added computed label to data flow deployments  Component: Enhanced ...
    • Fuuz Platform - In the Cloud

      Enterprises Tenants Environments Production QA Build The Fuuz Platform, is cloud based, of course. Presently it is hosted in the AWS (Amazon Web Service) atmosphere. Maybe you’re wondering, why there versus somewhere else. Amazon is agnostic, just ...