TLDR:
Is there a way to scan a project to see all bindings and scripts, and detect a python system API call?
Details:
We are looking to upgrade to 8.1 from 7.9, but we have a sizable library of projects (60) on 7.9 system. I understand that running the 8.1 installer on a 7.9 installation will run an update script and handle most of the gateway migration. Does that migration also include project migration as well? I have read this Upgrade Manual and it describes the "Deprecated system.tag Functions" and I know we used that alot.
If the gateway update does not handle project migration, is there a way to scan a project and see if any of the binding or scripts use system.tag.readBlocking or any other arbitrary string?
PS: As of writing this, I realize that what I am describing is a search feature that the designer has already, but the migration question still stands, and is there a way to search through multiple projects at once?
When your import a complete v7.9 gateway backup to v8.1, the entire gateway is migrated, including projects. This is the recommended way to migrate, as all of the projects will be set to inherit from a new global project, which receives the former shared.* scripts. That new global project is configured as the gateway scripting project, thus preserving all global scope functionality.
Deprecated system functions still work in v8.1. They are just not recommended for new work, are no longer in the documentation, and any bugs found in them won't be fixed. You do not need to replace those at the time of upgrade. Replace them as needed as development continues.
I'm not aware of any deprecated scripting functions being removed. Certainly there's been no announcements of any coming up. And even if I had gone digging in v8.3, I couldn't report it.
While we technically reserve the right to remove deprecated functions at any time, in practice it more or less never happens.
For some concrete data to back that up, in the almost nine years I've been at IA I'm aware of 1 function being removed in a way that would actually break compilation.
In 8.3 there are some new deprecations.
All the system.gui and system.nav functions are being moved to system.vision.
A variety of system functions that implicitly relied on Vision (or only worked in Vision scope) are being migrated to system.vision as well (i.e. system.db.refresh)
The existing functions to interact with named queries are being deprecated in favor of new variants.
In all of the above cases, we're taking advantage of a new "soft" deprecation functionality - these functions will still show up in autocomplete, but be de-emphasized and suggest a replacement.
To even further reassure you - the one possibly breaking change to scripting functions directly we're making is to the system.alert namespace (note alert, not alarm) - these functions have been deprecated since Ignition 7.6 was released in 2013. These functions will still compile, but have been changed internally to do nothing/always return an empty list/etc.
I assume this means that the function will now be system.vision.refresh or some other variant that doesn't give the impression that the function has anything to do with Databases?