Upgrading Solutions Reference
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
| 2018.1, 2019.1, | Yes | Direct upgrade to 10.1 or newer |
| Earlier than 2018.1 | No | First upgrade to 2018.1/2019.1/, 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
- Place
<project>.tprojfile in Solutions Manager folder - Press Refresh in Solution List
- Legacy project appears with "Project." prefix
- Select project and click "Upgrade Version"
- System creates
.dbslnfile with same name - Original
.tprojfile remains intact - Designer prompts for Build on first opening
File Handling
| Original file | Preserved unchanged |
| New solution | Created as .dbsln |
| Solution List | Shows only new .dbsln |
| Legacy file | Hidden from list |
Manual Corrections Required
RuntimeUsers Database
Issue: Table name change from EditSecurityUsers_Runtime to SecurityRuntimeUsers
Required Action:
- Rename table in target database
- Update from
EditSecurityUsers_Runtime - Change to
SecurityRuntimeUsers - 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
| Complex customization | Manual review required | |
| 10 | Simplified interface | Cannot 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 FunctionLogOn 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 FunctionComplete 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 FunctionUpdated 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 FunctionAdditional Corrections
Symbol Mnemonic
All mnemonics require default values:
| 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
| Method | Docking/alignment | New layout system |
| Multi-level menus | Multiple docked windows | Single header window |
| Submenus | Separate windows | ChildDisplay controls |
Projects from 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
| Synchronous SQL calls | Warning issued | Use async methods |
| Custom theme editing | Not supported | Use standard themes |
<TagProvider>.("Topic Path") syntax | Removed | Map to AssetTree |
| XPS documents | Not supported | Use 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
| Display errors | Update async methods in CodeBehind |
| Database failures | Rename RuntimeUsers table |
| Theme problems | Review color mappings |
| Layout issues | Redesign 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