Upgrade solutions across platform versions.

Reference  Solution Solution CenterCreating | Managing | Server | Licensing | Upgrading


Upgrading Solutions  FactoryStudio Upgrade: Technical documentation for upgrading legacy projects to FrameworX version 10.

Version 10.1 or newer represents a major advancement with simplified concepts and new technologies. While most legacy projects upgrade smoothly, 100% compatibility cannot be guaranteed. All upgraded projects require validation in a lab environment before production deployment.


Upgrade Requirements

Version Compatibility

Source VersionDirect UpgradeProcess
9.1, 9.2YesDirect upgrade to 10.1 or newer
Earlier than 9.1NoFirst upgrade to 9.1/9.2, then to 10.1 or newer

Important Notice

All projects must be revalidated in a lab environment before field deployment. This step is essential to confirm optimal functionality in the new version.


Upgrade Process

Steps

  1. Place <project>.tproj file in Solutions Manager folder
  2. Press Refresh in Solution List
  3. Legacy project appears with "Project." prefix
  4. Select project and click "Upgrade Version"
  5. System creates .dbsln file with same name
  6. Original .tproj file remains intact
  7. Designer prompts for Build on first opening

File Handling

ActionResult
Original filePreserved unchanged
New solutionCreated as .dbsln
Solution ListShows only new .dbsln
Legacy fileHidden from list

Manual Corrections Required

RuntimeUsers Database

Issue: Table name change from EditSecurityUsers_Runtime to SecurityRuntimeUsers

Required Action:

  1. Rename table in target database
  2. Update from EditSecurityUsers_Runtime
  3. Change to SecurityRuntimeUsers
  4. Complete before production deployment

Advanced Toolkit Applications

Applications using programmatic engineering (EngWrapper API) may lack compatibility due to internal structure changes. Contact support for upgrade assistance.

Themes

VersionApproachMigration
9.2Complex customizationManual review required
10Simplified interfaceCannot fully automate

Review screens and objects mapped to theme resources after upgrade.


Asynchronous Methods

Version 10.1 or newer uses async programming patterns for improved performance and HTML5 compatibility.

Required Changes

Server Class Calls from Client

C# Example:

csharp

public async Task DisplayOpening()
{
    await @Script.Class.ServerMain.Method1();
}

VB.NET Example:

vbnet

Public Async Function DisplayOpening() As Task
    Await @Script.Class.ServerMain.Method1()
End Function

LogOn Method Update

Replace LogOn() with LogOnAsync():

JavaScript:

javascript

this.DialogOnOK = async function()
{
    var result = await @Client.LogOnAsync("user1", "pass1");
    return true;
};

C#:

csharp

public async Task<bool> DialogOnOK()
{
    var result = await @Client.LogOnAsync("user1", "pass1");
    return true;
}

VB.NET:

vbnet

Public Async Function DialogOnOK() As Task(Of Boolean)
    Dim result As Integer = Await @Client.LogOnAsync("user1", "pass1")
    Return True
End Function

Complete CodeBehind Example

Legacy Code (Synchronous):

vbnet

Public Function DialogOnOK() As Boolean
    Dim log As eSecurityErrors
    log = DirectCast(@Client.LogOn(@Client.InputUserName, @Client.InputPassword), eSecurityErrors)
    If log = eSecurityErrors.OK Then
        @Display.LogOn.Close()
        Return True
    End If
    Return False
End Function

Updated Code (Async):

vbnet

Public Async Function DialogOnOK() As Task(Of Boolean)
    Dim log As eSecurityErrors
    log = DirectCast(Await @Client.LogOnAsync(@Client.InputUserName, @Client.InputPassword), eSecurityErrors)
    If log = eSecurityErrors.OK Then
        @Display.LogOn.Close()
        Return True
    End If
    Return False
End Function

Additional Corrections

Symbol Mnemonic

All mnemonics require default values:

VersionFormatExample
Legacy#HourOfDay:Missing default
10.1 or newer #HourOfDay:""Includes default

Popup Position

Use Drawing Properties for positioning:

  • Path: Drawing → Display → [DisplayName] → Drawing Properties
  • Settings: Left and Top

Layout System

FeatureLegacy10.1 or newer
MethodDocking/alignmentNew layout system
Multi-level menusMultiple docked windowsSingle header window
SubmenusSeparate windowsChildDisplay controls


Projects from 9.2 or older versions that did not use the last screen in the layout list as the dynamic screen, which automatically switched screens with an open command and therefore needed to use the OpenAtIndex command, must have their layouts reconfigured, because in a migration to 10.1 or newer, the last screen in the layout list will be considered the main switching screen.



Deprecated Features

FeatureStatusAlternative
Synchronous SQL callsWarning issuedUse async methods
Custom theme editingNot supportedUse standard themes
<TagProvider>.("Topic Path") syntaxRemovedMap to AssetTree
XPS documentsNot supportedUse PDF or other formats

Validation Checklist

Pre-Production Testing

  • All displays open correctly
  • Scripts execute without errors
  • Database connections work
  • Alarms function properly
  • Historical data logs correctly
  • Client connections stable
  • Performance acceptable

Common Issues

IssueSolution
Display errorsUpdate async methods in CodeBehind
Database failuresRename RuntimeUsers table
Theme problemsReview color mappings
Layout issuesRedesign using new system

Best Practices Checklist

  • Backup original project before upgrade
  • Test thoroughly in lab environment
  • Document all manual changes made
  • Verify async methods in all scripts
  • Review deprecated features for alternatives
  • Plan theme and layout updates
  • Validate all functionality before production



In this section...