Deckhand® Pro –

October 27th, 2023
Requires iPadOS 15 or later
Requires CatchFlow™ IDE version 2.0 or higher

This release addresses the following:


  • Introducing $action.showUpgradeDialog(): We have introduced a powerful new debug action: $action.showUpgradeDialog(). This action is designed to assist workflow developers by allowing them to preview the upgrade dialog that would be shown for the current workflow.
    • With $action.showUpgradeDialog(), you can now visualize and test the upgrade dialog before applying changes to your workflow. This feature provides a valuable tool for fine-tuning your workflow and ensuring a seamless user experience when performing upgrades.
  • Introducing maximumImages for <imageEntry/>: We have added a powerful new feature to enhance the user’s ability to upload multiple images within the application. You can now specify a value for maximumImages within the <imageEntry/> element, allowing users to upload multiple images conveniently.
  • Introducing Workflow Versioning: We are proud to introduce workflow versioning. With this new feature, you can now create and manage different versions of your workflows. Workflow versioning offers a robust solution for tracking and organising changes to your workflows over time.
  • Introducing Smart Delay for Form Validation: We have implemented a smart delay mechanism during the form validation process. This feature ensures that movement to the next form or the evaluation of validation expressions will always refer to fully updated data. The smart delay allows Deckhand to optimize the timing of these actions, ensuring that they occur after the data is updated and accurate.
  • New Functions: $getEvents() and $session.getEvents(): We are excited to introduce two powerful functions in this release to enhance event querying capabilities—$getEvents() and $session.getEvents().
    • $getEvents() Function: This function allows high-speed query access to events based on their status or specific event fields. It provides an efficient way to filter and retrieve events that match defined criteria.$session.getEvents() Function: Similar to $getEvents(), this function is specifically designed to provide query access to events within the session. It allows you to filter events based on status or selected event fields, offering flexibility and speed in retrieving relevant events.
    These new functions empower you with enhanced control and efficiency when querying events, enabling you to streamline your workflow processes.
  • New Function: $lookupSession(): In this release, we are pleased to introduce a new function, $lookupSession(). This function is designed to enhance your workflow management capabilities by allowing you to look up sessions based on their session IDs, similar to the existing $lookupEvent() function.With $lookupSession(), you can efficiently retrieve session details, facilitating easier session management and analysis within your workflows. This addition provides greater flexibility and control when working with sessions.
  • New Attribute: badgeActionQuery: We are excited to introduce a new attribute, badgeActionQuery, which is now included in the workflow root element. This attribute allows you to define the action query that will provide the counter for the badge on the workflow.By default, there is NO badge query defined. However, you have the flexibility to customize this attribute to achieve specific badge counter criteria based on your workflow requirements.
    • To Achieve Previous Behavior: If you wish to replicate the same results as before, where the badge counter displayed “readyToSubmit” and “acknowledged+errors,” you can set the badgeActionQuery attribute to badgeActionQuery="readyToSubmit,acknowledged+errors".This addition offers greater customisation and control over how badge counters are determined, aligning them with your workflow’s unique criteria.


  • Case-Sensitivity for Workflow Event IDs and Tags: In response to feedback and to ensure consistent behavior, we have made a significant change in this release related to the case-sensitivity of workflow event IDs and tags.
    • Previous Behavior: In the past, some searches for these events would work regardless of case, and Deckhand Pro was inconsistent about this rule.
    • Updated Behavior: Workflow event IDs and tags are now assumed to be strictly case-sensitive. This means that searches and operations involving event IDs and tags must match the exact case used when they were defined in the workflow.This change ensures consistent behavior and alignment with case-sensitive conventions, providing greater precision and accuracy when working with event IDs and tags.
  • Improved sortBy Expression: In previous versions of Deckhand® Pro, the sortBy= expression defined the component as the array itself when sorting. This approach could be confusing and led to unexpected results, as it didn’t refer to the sub-element within the array that was intended to be sorted. Now, the component in the sort expression correctly refers to the sub-element within the array that you intend to sort.
  • Reconfiguration of pinSecurity Attribute: In prior versions of Deckhand® Pro, the pinSecurity attribute was used to specify security settings on views, allowing users to control access to specific views. However, this approach had some limitations and was not as versatile as needed for a more comprehensive security model. We have made a significant change by discontinuing support for the pinSecurity attribute on views. Instead, this attribute is now supported on events. This reconfiguration aligns Deckhand® Pro with a more robust and flexible security model.

Fixed Issues:

  • Improved collect() Functionality: In the previous version, the collect() function had a limitation where the third argument could only iterate over arrays of dictionaries. This restriction hindered the flexibility of the function in processing different data structures. Now, any iterable item, similar to the behavior of filter(), can be used in the mapping expression.
  • Enhanced Handling of Arrays in for-each Loop: In previous versions of Deckhand® Pro, when using the for-each loop on a list of values containing an array, it would set the iteration variable to only the first item of the array, rather than iterating over the entire array. This limitation could lead to unexpected behavior and difficulties in working with arrays. Now, when the for-each loop encounters an array in the list of values, it correctly iterates over the entire array, ensuring that you can work with array elements as expected.

Thank you for your continued support and valuable feedback. We strive to provide you with the best experience, and your reports help us identify and resolve any issues promptly. If you encounter any further problems or have suggestions for improvement, please don’t hesitate to reach out to our support team.

-The Deckhand Pro Team