Release Notes 2.2

Modified on Wed, 08 May 2024 at 04:00 PM

These release notes are organised into three Sections:

  • New and Improved Features - which summarise the new and improved functionality provided in this release
  • Issues fixed - which identify all issues corrected in this release
  • Installation and Refactoring - which includes instructions as to how to apply this release to your installation

New and Improved features

This section includes a summary of the new functionality provided in this release, it is broken down into the three main components of the software:

  • Portal
  • Studio
  • Runtime

Where available links are included to other articles in the Support Portal that provide more detailed information about the new features and how they can be utilised.  If the change relates to a Ticket in the Support Portal the number of the Ticket is included in the header after the has symbol (#).


This section includes improvements to the browser based Portal used to manage the application and display the results of the migrations to the Users.

Dashboard enhancements

The dashboard is now editable in the Configuration area by administrators.  This functionality will allow the adding/removing of widgets and the resizing/arranging of widgets. 

This functionality is more fully described in the Article Dashboard Configuration in the Portal - Configuration section of the Guide to Hopp  Portal.

Additional Widgets

As part of this release, the Impact and Disposition widgets are retained on the Dashboard while existing widgets originating from optional modules (Timelines and Items) are replaced with the new widgets Notifications and Jobs. Installations that include the the ItemMgr and Timelines modules can use the new edit functionality of the dashboard to add these back, if desired.

These additional widgets are part of this release: 

Jobs WidgetDisplays a list of Jobs currently executing in the selected track. Optionally the list can include jobs completed in the last hour.

Notifications WidgetDisplays a list of new, unread Notifications for the current user

Test Coverage Widget
(provided the Planning module is installed)
Displays a Pie Chart of the test state of the lowest leaf test areas

Link to and From Events

In addition to the existing capability to create links between Items and Test Areas it is now possible also create links to Events and vice versa.  A link can be created from an Event to an existing Item/Test Area/Event or a new Item can be created and the link established.  A link can also be created from an Item/Test Area to an existing Event.

Refresh button added to Operations

The Refresh button in the top right corner of lists in the Operations section of the Portal, which was introduced with the porting of the Director client functionality, has been extended to all lists in the Operations section.

Multi-row selection in lists - #3713

It has been made possible to select multiple rows with Ctrl-click in the Operation lists in the following:

  • Source Tables
  • Source Views
  • Valuesets
  • Objects
  • Events

Load of Translation Valuesets in runtime job should omit rows for deleted partition - #2785

Changing a Partition Value will now cause all Translation Valueset rows for the partition value to be updated as well, in effect moving these rows from the old partition value to the new.

Item Manager (if installed)

If using the ability to auto subscribe to new items (introduced in version 2.1):

the user will now receive a notification when a new item has been created and subscribed.


This section includes improvements to the Studio desktop application.

New No Targets checkbox on Business Object

A new check box has been added to the Target tab of a Business Object in the Target Map

When this box is checked, the validation message 0013 No Target Objects mapped to Business Object is no longer emitted. 

If it is not checked and no Target Objects are mapped, the message 0013 will still be fired, but now as an Error instead of a Warning as before.

Validation errors 0013 must be resolved by either mapping minimum 1 Target Object or checking the No Targets checkbox

UTF-8 character encoding

Studio now saves all item xml files using UTF-8 encoding both in the xml content and in the encoding of the file itself.

This enables advanced encoding support in Studio:


This section includes improvements to the Server based components of the software and its deployment. 

The changes to the deployment model for the Runtime and for the Engines combined with the new option for file exchange via Azure Blob Storage means that the Portal no longer needs to be deployed in a local IIS instance but can be deployed as an Azure App Service. However, if the Portal is running as an Azure App Service, Windows Authentication is not available - Form or External Authentication must be used 

New Runtime and Deployment Model

In the previous version, the Runtime was installed in a folder on the master server. Likewise, the destination of an engine deployed from Visual Studio was a folder on the master server.

On track start, both the Runtime and the Engines used by the track were copied from the folder on the master server to the track.

This has fundamentally changed with version 2.2:

  • The runtime is now a zip file that is uploaded to the Portal in a new Configuration page. This zip file is available on our download page and has replaced the MigFx.Director.Runtime.msi file
  • When an Engine is deployed from Visual Studio, it is also uploaded to the Portal by the Hopp Visual Studio Extension.

When a track is started, the Track Start entry in the job list will now show information about the Runtime as well as the Source- and Target Engines loaded by the Track:


File Exchange via Azure Blob Storage

Some file up- and downloads in the Portal requires the Poral API and the track running on an execution server to exchange files. Up to now, the only option for this file exchange has been via a local folder on the master server.

Via the new FileStorage section in the Portal appsettings.json file, it is now possible to use Azure Blob storage for this file exchange instead of a local folder. This is optional, the existing file exchange via a local folder is still available, but the appsteeings.json file must in any case be updated as existing appsettings have been renamed.

Powershell automation

The PowerShell automation feature has been extended to include commands to Get/Set RunParameter and Extension Parameter values from PowerShell

  • Get/Set-HpParameterValue
  • Get/Set-HpExtensionParameterValue

Enhanced Encoding support

In order to provide complete character encoding support, an option is added to the Runtime to enable NVarChar support:

The option is set to false by default and will not have any effect unless set to true

Setting the option to true will cause the Runtime to store all the migration results in NVarChar columns in Sql Server. This will provide better support for complex encodings like Chinese or Kanji but may cause increased disk space usage for simpler character sets.

Issues fixed

The following bugs have been fixed in this release, where there is a Ticket on the Support Portal its number is included after a hash symbol (#):

  • Incorrect dependency error on Source/Data 
    Tables that have been loaded should not be error marked. This has been corrected.

  • Business Object missing in Impact statistic
    Changed the Impact Statistic view to also show Business Objects that do not have any events. Uses ITrackingProjectService.ListEntities for the basis for a left join

  • Studio Source Crash when validating 
    If you have a business object open in Studio (Source project) which is not mapped and marked as ignore and then choose Validate, Studio crashes. This has been corrected.

  • InsertSqlUnloader problems and enhancements
    An incompatible string value caused the InsertSqlUnloader to fail. This has been corrected.

  • No validation error on referenced, skipped events
    The user had marked a number of events incomplete. These event were referenced from rule usages but this did not generate any validation errors. Subsequently, the target engine generation failed with an unknown receiver. This has been corrected.

  • Double quotes in Literals generates invalid code
    In some cases, inserting a double-quote into a literal value is Studio caused the engine generator to generate invalid c# code

  • +0 in Job Header for Import Job
    Selected all available Business Objects for import and got an odd "+0" literal added to the Job Header. This has been corrected.

  • Business Object filter in Object list should not be cached
    The filter on Business Object in the State/Objects menu option is no longer cached

  • Local Storage: Do not include ProjectID, TrackID, PartitionId etc - should be per user only
    Currently all state stored in local storage is stored for the user but also for a given project a given track, a given partition. This should be changed so the state is stored for the user across all projects/tracks/partitions etc. Note: Some filter settings are project specific (EntityID, Event, etc) and is still stored pr project.

  • Avoid Process deadlock on large StandardOutput
    In certain instance, a background process producing a large amount of standard output could case a deadlock. This has been corrected

  • Source/Data and Source/Views cannot be filtered by empty string
    Checkboxes to be able to filter on a NULL value or an empty field have been added to the filters for the downloaded lists on these menu options.

  • Loaded Date not shown for tables that are loaded - #3726
    This was a randomly occurring error that has been corrected.

  • Runparameter update - #3724
    It wasn't possible to key in anything into the text box presented when updating a runparameter of data type Timestamp.

  • State -> Translation is not showing the description - #3697
    The description entered in the Studio for a Translation valueset did not display in the Portal, this has been corrected.

  • Statistic page is showing objects that are not part of current execution - #2669
    If an object does not have any items in the current execution but did in previous ones the previous count remains visible. This has been corrected.

  • Missing ProjectID in URL - #3975
    This was identified as ocurring when navigating and has been corrected.

  • Jobs not started and not able to cancel them - #3734
    If a track stops without completing all jobs that have been submitted, these become orphaned and cannot be canceled so the whole set must be resubmitted. This has been corrected.

  • References on View Field also returns references to the View itself - #3778
    Using "Find References" on an Exposed Field in a Source View returns the references to the field. But also returns references to the view itself. This has been corrected.

  • Upload Parameters: Boolean values wrong
    If a set of parameters including boolean values is exported from one track and imported to another the results are not reliable. This has been corrected.

  • Job Result displaying wrong count
    The results displayed in right hand pane for a Job are different from those displayed if the results of the events are displayed. This has been corrected.

  • IndexAnalyzer fails when temp table has index
    The index analyzer fails when a view uses a temp table or a table variable with index. This caused the setup of the Source Engine to fail and has been corrected.

  • Studio Source Crash when validating
    If you have a business object open in Studio (Source project) which is not mapped and marked as ignore and then choose Validate, Studio crashes. This has been corrected.

  • Flag using an incomplete Event does not fail in validation
    If events which are used in rules are marked incomplete after being used the Studio validation did not detect this as an error. This has been corrected.

  • Planning module: External user should only comment on own partition - #1672
    An external user should only be able to add comments on a test area for own partition and not have access to add comments for the All partition

Installation and Refactoring

Artefacts can be downloaded from the download page. Additional database refactor scripts are attached to these release notes


  • The Sql scripts to run are all attached below

  • Please back up all databases before running refactor scripts

  • Run attached MigrationDb.13.0.sql script in all Migration databases

  • Run attached MasterDb.07.0.sql script in the Master database

  • Run attached MigFx.PortalDb.Setup.sql in the Portal database

  • Delete MigFx_Dashboards database (decommissioned and data migrated to the Portal database)

Net 8.0

  • All Net 7.0 applications are upgraded to Net 8.0

  • Ensure the Net SDK 8.0 is installed on all servers

  • Any extensions developed in-house should be upgraded to Net 8.0 (Portal extensions, Data Services extensions, etc.)

  • The following NuGet Packages should be upgraded, if referenced by any bespoke Portal extension modules:
  • AutoMapper: Version=13.0.1
  • AutoMapper.Collection: Version=10.0.0
  • Microsoft.EntityFrameworkCore: Version=8.0.2

  • remove AutoMapper.Extensions.Microsoft.DependencyInjection: Version=* 


  • Re-install Hopp Studio
    • Un-install previous version of Hopp Studio 
    • This update of Hopp Studio requires the un-install of previous version of SAP Crystal Reports
    • Install new version of Hopp Studio

  • Upgrade to Visual Studio 2022, minimum release 17.8 (required for Net 8.0)

  • Reinstall VsExtension.2022.vsix

  • Upgrade Engine Generator and Libraries
    • If using NuGet
    • run dotnet tool update --global

    • If not using NuGet
    • Reinstall EngineFramework
    • Reinstall LIbraries

  • Reinstall DataServices Extensions (if installed):
  • Sql Server
  • Oracle
  • DB2

Visual Studio Engine Projects

  • Upgrade to Net 8.0

  • Ensure that NuGet Package Reference versions are correct
    • Microsoft.EntityFrameworkCore.SqlServer: Version=8.0.2
    • Microsoft.Data.SqlClient: Version=5.2.0
      • Obs:System.Data.SqlClient: Version=4.8.5 must be replaced by different package Microsoft.Data.SqlClient: Version=5.2.0
    • Hopp.TargetEngine: Version 2.2.*
    • Hopp.SourceEngine: Version 2.2.*

  • Re-generate and re-deploy all engines 
    • Obs: Important that the re-install of the Engine Generator (above) has been completed first

Master Server

  • Uninstall Hopp Runtime
    • Instead, upload the via the Portal (zip file available on the download page)

  • Remove Dashboard extension from Portal (if installed)
    • Delete the Dashboards folder in the Extension folders MigFx\Client and MigFx\Server

  • Redeploy Portal and all installed extensions

  • Edit Portal appsettings.json
    • Remove the MigFxDashboards connection string
    • Add the FileStorage section as described below
    • Add the AutoSubscribedTemplate as described below

Portal appsettings.json modifications

The Portal appsettings.json needs to be modified to accommodate for the new option to use Azure blob storage for file exchange and to autosubscribe to new items

When adding to the appsettings.json, please remember to add a comma after the preceding section to keep the json format valid. 


The existing setting FileTransferURN must be replaced with a new section. First preserve the value of the FileTransferURN. Then replace the FileTransferURN setting with this section

"FileStorage": {
  "Provider": "Local", // Local or AzureBlobContainer
  "Local": {
    "Path": "(insert the value from FileTransferURN)" 
  "AzureBlobContainer": {
    "ConnectionString": "(not set)",
    "ContainerName": "(not set)"

AutoSubscribe templates

Two new templates must be added to the NotificationConfiguration section. Tip: You can find the entire NotificationConfiguration section in the downloaded appsettings.json file and copy it from there

Add this section to the MessageTemplates:

"ElementAutoSubscribedTemplate": {
  "TitleTemplate": "Project {0} {1} created and added to your subscriptions",
  "ContentTemplate": "<p>{2} was created at <b>{4}</b> by <b>{5}</b> in migFx and automatically added to your list of subscriptions:</p><p>Project <b>{0} {1}</b></p><p>Please follow this link if you wish to review the changes:</p><p><a href=\"{3}\">{1}</a></p>"

Add this section to the EmailTemplates:

"ElementAutoSubscribedTemplate": {
  "EmailSubject": "Project {0} {1} was created",
  "EmailBody": "<div style=\"font-family: sans-serif\"><p>{6},</p><br><p>{2} was created at <b>{4}</b> by <b>{5}</b> in migFx and automatically added to your list of subscriptions:</p><p>Project <b>{0} {1}</b></p><p>Please follow this link if you wish to review the changes:</p><p><a href=\"{3}\">{1}</a></p><br><p>Regards</p><p>hopp</p></div>"

Execution Servers

The Hopp Agent Windows service must be re-installed.

  • Stop all Tracks running on the server
  • Stop the Hopp Agent service
  • Reinstall the Hopp Agent service following these steps
    • Edit the MigFx.Agent.dll.config file and preserve the MigMaster connection string
    • Uninstall the Hopp Agent service
    • Install MigFx.Director.Agent.msi from the download page
    • Edit the MigFx.Agent.dll.config file and re-establish MigMaster connection string from above
      • OBS: If you chose to preserve and re-establish the entire MigFx.Agent.dll.config file, it is important to ensure that the <appSettings> element in the config file has no active child key elements. They should all be either removed or enclosed in an xml comment
    • Set the log on account for the Hopp Agent service to the Hopp service account
    • Start the Hopp Agent service

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select atleast one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article