Keep up to date with the Symphony Framework by subscribing to the mailing list.

Check out the new Symphony Framework Academy! It’s the home for information and tutorials to help you get the most from the Symphony Framework! Click on the Academy option below.

Symphony Framework Release Notes

Symphony Framework Version

General note: If you install Symphony Framework you must re-generate all your code-generated source files, resource files, controls and windows. Failure to regenerate will cause your applications to fail. Symphony Framework requires at least version 4.2.6 of CodeGen due to some new functionality that has been added. Please ensure that you download and install the latest version of CodeGen.

The symphony_Collection.tpl file now creates a blank place-holder method. This prevents build/runtime issues when a structure does not have any selection list of window field defined. The template has been corrected for numeric field types.

The Symphony_ListView.tpl template now correctly data-binds combo list items so that the description value of the selected value is displayed, not the underlying field value.

The Symphony_Style.tpl template has been corrected to not include fields that have “exclude from toolkit” set. Combo selection styles now use the correct field binding. A new capability has been added so that you can define the command for a drill method in the field’s long description. Setting < SYMPHONY_SEARCHBOX_COMMAND= > overwrites the default “NavigateState” command binding with the defined string.

The Symphony.Conductor.DataIO.BasicFileAccess class now fully supports optimistic locking. An alternative constructor can be used to indicate that optimistic locking is required.

The Symphony.Conductor.DataIO.FileIO class now fully supports optimistic locking.

The Symphony.Conductor.ViewModel.CRUDViewModel now has logic to handle navigating to custom drill processing visual states. The base toolbar and menu controls are correctly disabled when a drill/lookup visual state is navigated to.

Fixed a bug in the Symphony.Conductor.Converter.SynergyAlphaConverter class when using the DEFAULTVALUE attribute. As a note, the data objects now set default values correctly if defined in the repository.

A new Symphony_DataValidator.tpl template has been added to the distribution. This template allows you to create a class that will present, by key name, methods for each key defined in the repository structure that will validate that a record in the file existing, using the key segment values. This class is useful when you are implement a relationship between two structured.

A new token called < SYMPHONY_ARRAY_FIELD > has been added. By defining this token in the long description of a field the field will not be included as properties for the code generated data object. It is designed to prevent the creation of large data objects when your structure has large arrayed fields. Further optimisations within the data object code generation are planned for future releases.

CodeGen has been enhanced and now provides the ability to define an < OPTIONAL_USERTOKEN > in the template file. These are very powerful and have been used within the Symphony. For example you can define in the template file:


And then use the token as required:

IsModifyCommandAvailable = < SYMPHONY_ALLOW_MODIFY >

If you do not want the default behaviour you can define the usertoken, for example:

codegen -ut SYMPHONY_ALLOW_MODIFY=%ValidateUserCanModify()

This is a powerful new feature in CodeGen and allows us to easily customize standard templates.

The Symphony_CRUDViewModel.tpl template file now defined three < OPTIONAL_USERTOKEN > values that you can optionally replace. These are:


You can override the default values by defining the appropriate user tokens.

A new template Symphony_CRUDMainView.tpl has been added that allows you to define the main CRUD window that hosts your key-data entry, primary search and drill lookup visual states. It also defines the standard menu and toolbar visual elements.

The Symphony.Crescendo.Presentation.DialogControl now correctly limits the width of the displayed text and wraps