A Sandcastle Help File Builder project to document the Interface Libraries has been added to the MigFx Visual Studio Solution (Source\Interfaces\Interfaces.Documentation). Please install Sandcastle Help File Builder from here if you wish to be able to load and build this project.
The resulting documentation of the Interface libraries can be seen on the hopp.tech web site here
Studio 1.2.0
New options available when creating a Lookup Rule. Read more about this here: Defining a Lookup Rule in Studio. This new functionality requires a refactor of all existing Maps, please see below.
When entering a Literal Value, the panel can now be expanded to ease the entry of a multi-line value
Enhancements of the Auto assign values feature for Target Fields in the Target Map. Read more about this here: Auto-assign Target Fields
Fixed bug that a new Target Object was not automatically assigned Target values to an existing Target Object, if such a Target Object existed for the same target table.
At the same time, this facility has been enhanced to allow the user to disable it or choose which Target Object to use. Read more about this here: Adding a new Target Object
New setting: Default value for new, nullable fields. Read more about this here: Settings for Source- and Target Maps. Default for the new setting is None, which corresponds to the current behavior of Studio
Source Map: List of Source Views added (double-click the View node in the Studio Project Explorer)
Max precision for data type Num is now 38 (was 18)
Invalid Metadata Field Name will result in Validation error 0150. Column for validation result added to the Fields list
Names can now start with an underscore
Reports renamed
Fixed bug that manual sequence of Target Map and Source Map Interface fields was not properly taken into account when valdating calculation sequence. The problem made it difficult/impossible to correct validation error 0190
Fixed that Manual Rules and Bag Methods sometimes enabled the Scale TextBox for Data Type Char
Fixed bug that manual rules where not correctly parsed for Valueset queries. This led to missing indexes on Valueset tables in Staging database
Fixed bug that the individual cells on the Relationship datagrid on a Business Object was open for edit (edit is done in the frameless dialog that open on row click)
More robust guard against exceptions in the ComboBox.ValueChanged event. Exceptions are written to the Windows Event Log
Fixed bug that the list of Interface Fields on an Business Object in the Source Map sometime threw an InvalidOperationException (BindingSource cannot be its own data source)
Fixed bug the that validation of an Identity Value failed with a Null Reference exception, if the parent Target Object previously had been closed without saving changes
Fixed bug that a corrupted Tool Window Layout xml file made it impossible to start Studio. If the layout xml file is corrupted, it is now deleted and Studio will start with a default Tool Window Layout on next attempt
Migration databases
Fixed recursive Sql to determine import sequence to properly handle self-referencing items (Ticket 135).
Please update all Migration databases using the attached script UpdateMigrationDb.sql
Director Watcher Service 1.2.0
Renamed to MigFx Director Agent
Will look for scripts in the installation folder
If Startup.cmd is found, it will be executed when the service starts
If Shutdown.cmd is found, it will be executed when the service shuts down
Look in the Application Event Log to see standard output and standard error from the scripts
Director.Client 1.2.0
Track Window no longer maximizes automatically on open
Director Runtime 1.2.0
Fixed bug that Fast Track Export found Source Engine RunParameters ok, but did not find any Target Engine RunParameters
Extension jobs now have access to new information via the Job Context interface
TrackNumber
The path to the Track folder dedicated to Extensions
EngineFramework 1.2.0
New facility to lookup a root Business Object from any manual rule in the Target Engine (see below)
Support for new options on Lookup Rules in the generated code (Source- and Target Engine)
Identity() methods have been made available to ExitRules. The Identities created will be unique for the Business Object
Fixed bug that null value was not correctly retrieved from an Interface Field xml node with no value attribute
Fixed bug in Target Engine Generator that the Select method of generated TargetEntity wrappers did not correctly query on metadataId (left over from the rename of 'schema' to 'metadata')
Fixed bug that incorrectly generated TargetEntity Wrappers in the root Target System of the TargetSystem folder when no Alias supplied for the Metadata in Studio. When no Alias is supplied, the Name of the Metadata must be assumed as Alias and the wrappers places in a corresponding sub-folder
Changed signature of the Select method on TargetEntity wrappers to take a TargetEntitySearchMode enumeration as parameter instead of boolean includeDescendants. NB: May cause some manual rules to fail in compilation, however the fix is easy, see below
Interfaces 1.2.0
New MigExcelWriter class exposed to enable extensions to easily write Excel files
Fixed bug that caused Studio and Director to keep an exclusive lock on an Excel Valueset file if load data failed
TrackNumber and additional Extension folder introduced in the IJobContext interface for Extension jobs
Sandcastle help file project added
Xml comments refined
Install on all workstations and migration servers
Please adhere closely to this installation recipe
Close all instances of Studio and Director (if migration server, also stop all tracks and stop the Watcher service)
Uninstall Interfaces 1.1.3
Verify that the Interfaces dlls have been deleted from C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Public.DataServices\v4.0_1.0.0.0__92ee5b953e47dbd1 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Public.Director.Server\v4.0_1.0.0.0__92ee5b953e47dbd1 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Internal.Valueset\v4.0_1.0.0.0__92ee5b953e47dbd1 If not, delete the dll manually
Install Interfaces 1.1.4
If migration server, start the Watcher service
Tracker 1.2.0
Fixed bug that caused the Tracker to be in an unusable state for a user, if settings where changed without selecting a language
Minor change derived from the new MigExcelWriter in Interfaces 1.1.4
Utility 1.2.0
Now exits with code 0xFF on any error (delivered as hotfix 2019-02-08)
Refactoring of Studio Maps
New, enhanced functionality for Lookup Rules requires a refactor of all Studio maps. The refactoring utility MigFx.Studio.Refactor is delivered with the Studio installer in the Studio installation folder (normally C:\Program Files (x86)\HoppTech\MigFx.Studio\1.0).
The refactor utility takes these parameters:
Operation: To select which refactor to execute, in this case LookupEnhancement
FromFolder: The folder from where to read the original Map to be refactored
WorkingFolder: The Folder to which to write the refactored Map. If this folder exists, it will be deleted and recreated
In case the Map has been checked in to the Repository, the recommended procedure is:
Ensure nobody has anything checked out
Open the Map in Studio (the new release can open the original Map, but will not save Lookup Rules correctly)
Check everything out and close Studio
Rename the working folder (for instance suffix the folder name with '.old'
Run the refactor utility, specifying the '.old' folder as input and the original folder name as output
Open the refactored Map and check everything in
Delete the '.old' folder
Other users can now simply do a global get latest to recover the refactored Map (no need to cleanup their workspaces).
Please enclose folder path names in double quotes if they contain any spaces.
TargetEngine: Root Business Entity Lookup from manual rules
The generated code for the Target Engine now has access to a new facility to lookup a root Business Object from any manual rule in the Target Engine by supplying values for the key Interface Fields. NB: Looking up a Business Object like this does not create a runtime dependency (migFx does not guarantee that the target Business Object is processed first).
A lookup returns an IRelationship instance with properties to retrieve the xml for Interface item received from the Source Engine as well as the Imported produced by the Target Engine.
Usage
var account = Lookup.Account(bankId, accountNumber); // Returns an IRelationship instance
if (null != account) // Null if the target Business Object is not found
{
var exportedXml = account.ExportedItem; // XmlElement containing the xml produced by the Source Engine
var importedXml = account.ImportedItem; // XmlElement containing the xml produced by the Target Engine
}
TargetEngine: Changed signature on TargetEntity wrappers Select method
The generated Select method has been enhanced to allow better control of how the Imported Item is searched for instances of the given TargetEntity. As can be seen below, both the old and the new signature has 2 parameters, the second of which has a default value.
// New signature
public static IEnumerable<T> Select(XmlElement item, TargetEntitySearchMode searchMode = TargetEntitySearchMode.Global)
// Old signature
public static IEnumerable<T> Select(XmlElement item, bool includeDescendants = true)
As long as no value is supplied for the second parameter, the method will behave as before. However, this change will cause existing rule implementations that explicitly supply a boolean value for the second parameter to fail in compilation. In this case, these corrections will cause the rule to compile and behave as before:
includeDescendants: true
Remove the value for the parameter from the call to revert to the default or explicitly supply TargetEntitySearchMode.Global for the searchMode parameter
includeDescendants: false
Supply TargetEntitySearchMode.Item for the searchMode parameter
Lars Kjaersgaard
For Contributors
Studio 1.2.0
Migration databases
Director Watcher Service 1.2.0
Director.Client 1.2.0
Director Runtime 1.2.0
EngineFramework 1.2.0
Interfaces 1.2.0
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Public.DataServices\v4.0_1.0.0.0__92ee5b953e47dbd1
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Public.Director.Server\v4.0_1.0.0.0__92ee5b953e47dbd1
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MigFx.Internal.Valueset\v4.0_1.0.0.0__92ee5b953e47dbd1
If not, delete the dll manually
Tracker 1.2.0
Utility 1.2.0
Refactoring of Studio Maps
New, enhanced functionality for Lookup Rules requires a refactor of all Studio maps. The refactoring utility MigFx.Studio.Refactor is delivered with the Studio installer in the Studio installation folder (normally C:\Program Files (x86)\HoppTech\MigFx.Studio\1.0).
The refactor utility takes these parameters:
In case the Map has been checked in to the Repository, the recommended procedure is:
Other users can now simply do a global get latest to recover the refactored Map (no need to cleanup their workspaces).
Command line
Please enclose folder path names in double quotes if they contain any spaces.
TargetEngine: Root Business Entity Lookup from manual rules
The generated code for the Target Engine now has access to a new facility to lookup a root Business Object from any manual rule in the Target Engine by supplying values for the key Interface Fields. NB: Looking up a Business Object like this does not create a runtime dependency (migFx does not guarantee that the target Business Object is processed first).
A lookup returns an IRelationship instance with properties to retrieve the xml for Interface item received from the Source Engine as well as the Imported produced by the Target Engine.
Usage
TargetEngine: Changed signature on TargetEntity wrappers Select method
The generated Select method has been enhanced to allow better control of how the Imported Item is searched for instances of the given TargetEntity. As can be seen below, both the old and the new signature has 2 parameters, the second of which has a default value.
As long as no value is supplied for the second parameter, the method will behave as before. However, this change will cause existing rule implementations that explicitly supply a boolean value for the second parameter to fail in compilation. In this case, these corrections will cause the rule to compile and behave as before: