C#Bot Release

Walkthrough Video


  • File Upload Support
    • Added support for the File and Image attributes on the model
    • Implemented AWS S3 storage provider
    • Implemented file system storage provider
    • Implemented OWASP security standards for file uploads
  • Added server-side Test Mocking and Abstractions
    • Added interface mocking framework Moq to allow for more fine-grain testing of server-side classes.
    • Updated server-side integration tests to allow dependency injected services to be overridden in the test framework.
  • Added React component tests
  • Forms behaviour updates:
    • New static list form tile
    • New datetime question tile
    • Added support for show conditions
      • This allows creators of forms to dynamically show or hide question tiles based on the results of other questions.
    • Added support for tool tips for questions
    • Added validators for questions (i.e. required)
  • Added better support for deploying multiple redundant instances of an application.
    • Previously a login token for a user would only work on the server that the token was generated from.
    • This has been changed so the login token will work across all applications that share the same database.


  • Build allows users to select additional attributes in table dropdown.
  • Added focus function to text areas to support programmatically focusing the text area, expose the TextAreaInput ref to outside.
  • Added a protected region around SetValidEntityAttributes.
  • Refactored Startup.cs to divide the code into smaller logical pieces and added more protected regions.
  • Added additional protected regions in client-side and corrected sorting in FormLayout component.
  • Added className CRUD option in the client-side.
  • Added Doc Strings for Test Web API.
  • Updated filter tests to work with new date formats.
  • Updated Get Test Names function for the platform to include spaces.
  • Navigation now has the option to turn off expand when in a horizontal orientation.
  • Uses SERVER_URL constant in all API calls from the client-side code.
  • Update Chrome Selenium driver to 81.0.4044.6900.
  • Updated Gecko Selenium driver to
  • Checkbox Component function updated to be onAfterChange.
    • Previously this function was called onChange.
    • Added a new onChange to allow overwriting the handle on the checkbox component.

Resolved Defects

  • Added missing protected region in appsettings.xml to match appsettings.Development.xml.
  • Fixed double icons appearing on export.
  • Fixed it so all schemes are being used for non-read permissions, instead of just the schemes the user had access to.
  • Fixed build/validation error tocharSequence.
  • Better handling of authorisation while creating workflow entities or hiding the create button.
  • Resolved issues with Violator selenium tests.
  • Issues with protected region content being removed when an attribute is deleted.
  • Attributes can no longer have the same name as references.
  • New selenium tests:
    • Update Workflow
    • Update Validation
  • Resolved Issues with client-side length and min/max validators when null values were presented.
  • Fixed issue where not having a form tile when you had a form entity would cause client-side compilation errors.
  • Resolved user registration issues
  • Resolved issues with visitor security

Migration Path

Database Update

In this release there are two new database tables to support the file upload feature, and the ability to share login tokens across multiple instances of an application. To create these new tables you will need to create and apply a new migration by running the following in the serverside/src directory of your project:

dotnet ef migrations add Version12
dotnet ef database update

Client-Side package update

As a part of this version we have updated some client-side packages. To apply these updates run the following in the clientside directory of your project.

yarn install

Checkbox Props Update

Previously the checkbox component had a property erroneously named onChange which would perform an action after a checkbox has changed. This function name has been updated to onAfterChange and a new onChange prop has been added to allow the overriding of the onChange handle for the checkbox.

To migrate your project to the new behaviour please update any calls to the onChange prop to onAfterChange instead.