BUG-16335: Perspective Session Event legacy script config failed to migrate to 8.3

After migrating a project from Ignition 8.1.33 Ignition 8.3.6, designer shows the Session Events within the project need to be migrated. Upon migration attempt, I get the error 'Unable to migrate legacy script config' (details below).

The first screenshot of my keystroke session event config is from the 8.1 instance and shows the valid regex pattern definition. Seems like there might be an issue in how these events are renamed when migrating to 8.3?

I can remove the event from the 8.1 instance, then backup and restore to 8.3 before manually recreating the event, but that is not a viable approach across our many projects and events. Are there any other workarounds to getting the projects to migrate properly?

java.lang.IllegalArgumentException: com.inductiveautomation.ignition.common.resourcecollection.NameInvalidException: Name ''InsertInsert[^ ]{2,24}Enter' (regex match)' is invalid
	at com.inductiveautomation.ignition.designer.project.ResourceTreeNode.addChild(ResourceTreeNode.java:255)
	at com.inductiveautomation.ignition.designer.project.DesignerProjectTreeImpl.lambda$createResourceInternal$10(DesignerProjectTreeImpl.java:213)
	at java.base/java.util.Optional.ifPresent(Unknown Source)
	at com.inductiveautomation.ignition.designer.project.DesignerProjectTreeImpl.createResourceInternal(DesignerProjectTreeImpl.java:206)
	at com.inductiveautomation.ignition.designer.project.DesignerProjectTreeImpl.createResource(DesignerProjectTreeImpl.java:189)
	at com.inductiveautomation.ignition.designer.project.DesignableProject.createResourceSafe(DesignableProject.java:99)
	at com.inductiveautomation.ignition.designer.navtree.EventScriptSingletonNode.migrateLegacyConfig(EventScriptSingletonNode.java:92)
	at com.inductiveautomation.ignition.designer.navtree.EventScriptSingletonNode.open(EventScriptSingletonNode.java:153)
	at com.inductiveautomation.ignition.designer.navtree.model.AbstractResourceNavTreeNode.onDoubleClick(AbstractResourceNavTreeNode.java:399)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.resourcecollection.NameInvalidException: Name ''InsertInsert[^ ]{2,24}Enter' (regex match)' is invalid
	at com.inductiveautomation.ignition.designer.project.ResourceTreeNode.addChildInternal(ResourceTreeNode.java:264)
	at com.inductiveautomation.ignition.designer.project.ResourceTreeNode.addChild(ResourceTreeNode.java:253)
	... 21 more

Ignition v8.3.6 (b2026042713)
Java: Azul Systems, Inc. 17.0.18

I went ahead and manually created the Keystroke event in 8.3. The event was able to be created using the same name, with the exception of removing the ^ (caret) character from the text string.

It appears that a caret is an invalid character when naming events. If the regex pattern is what is used to name the event, there should be error handling for when this scenario occurs. At the very least, I would be OK with the events named 'regex match 1', 'regex match 2', etc. Renaming an event is much less work on my end, compared to a script migration that fails and requires a full restore of the gateway.

Hey Aaron. Welcome!

Thanks for the bug report. This is a known issue affecting projects migrating from 8.1 to 8.3 where event script names contain currency or math symbols ($, €, ©, +, etc.).

The migration code doesn't correctly encode those characters, causing the "Unable to migrate legacy script config" error.

We have a fix in progress. In the meantime, the most practical workaround is:

  1. In your 8.1 instance, rename any Session Event scripts whose names contain $ or other symbol characters to use only letters, numbers, spaces, and standard punctuation.

  2. Then perform the backup/restore and migration to 8.3 as normal.

I think this is significantly easier than deleting and recreating. You're only changing the name before the migration. We hope to have a fix shipped soon. Then names with those characters will migrate cleanly without any renaming step needed. Hope this helps. Sorry for the inconvenience.

@ynejati, thanks for reviewing. Glad to hear there is a fix in progress.

As for the workaround suggestion, I am not able to find a way to rename the Session Event scripts. For Keystroke Events, the event name is automatically created based on the regex pattern or selected key for a keyDown/keyUp event. I have no way to change the name of the event, other than first changing my code, hence my post.