# Ignition Upgrade 7.9 To 8.1, and Project Upgrades

**URL:** <https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827>\
**Category:** Ignition\
**Tags:** ignition81, vision, ignition79, python\
**Created:** [April 8, 2025, 1:59pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827 "2025-04-08T13:59:41Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jacob.leonard](https://avatars.discourse-cdn.com/v4/letter/j/da6949/32.png) [@jacob.leonard](https://forum.inductiveautomation.com/u/jacob.leonard)\
**Post date:** [April 8, 2025, 1:59pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/1 "2025-04-08T13:59:41Z")

</div>

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](https://www.docs.inductiveautomation.com/docs/8.1/getting-started/installing-and-upgrading/ignition-8-upgrade-guide/79to81-upgrade-guide) 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](https://www.docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-tag/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?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 8, 2025, 2:33pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/2 "2025-04-08T14:33:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jacob.leonard](https://avatars.discourse-cdn.com/v4/letter/j/da6949/32.png) [@jacob.leonard](https://forum.inductiveautomation.com/u/jacob.leonard)\
**Post date:** [April 8, 2025, 2:40pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/3 "2025-04-08T14:40:44Z")

</div>

Thanks Phil,

Your probably not the best guy to ask, but are there any plans to remove the deprecated system functions in 8.3 or beyond?

I know the general way methods are removed, are by deprecating them, then eventual removal.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 8, 2025, 2:53pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/4 "2025-04-08T14:53:28Z")

</div>

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.

> [@jacob.leonard](#):
>
> not the best guy to ask

Correct.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 8, 2025, 4:04pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/5 "2025-04-08T16:04:48Z")

</div>

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 end user scripting.  
In 8.3 there are some new deprecations.

1. All the `system.gui` and `system.nav` functions are being moved to `system.vision`.
2. 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`)
3. The existing functions to interact with named queries are being deprecated in favor of new variants.
4. There are new tag historian functions within a module specific namespace, rather than `system.tag`.

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.

 ![Screenshot 2025-04-08 at 9.29.23 AM](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/b/5b13c9a4c768314234be16388abea36a1ce6cff4.jpeg)  
 ![Screenshot 2025-04-08 at 9.31.08 AM](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/c/5c7c1eb26ea16a81bed2fca8116f5b7d89b6d1a7.jpeg)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 8, 2025, 4:37pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/6 "2025-04-08T16:37:25Z")

</div>

Ooooo! I hadn't noticed the new replacement recommendations in the code editor. Very nice.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [April 8, 2025, 5:13pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/7 "2025-04-08T17:13:11Z")

</div>

> [@paul-griffith](#):
>
> `system.vision` as well (i.e. `system.db.refresh`)

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?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 8, 2025, 5:49pm UTC](https://forum.inductiveautomation.com/t/ignition-upgrade-7-9-to-8-1-and-project-upgrades/104827/8 "2025-04-08T17:49:58Z")

</div>

![Screenshot 2025-04-08 at 10.49.04 AM](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/2/92cb6b401a75d7422c8067c2506209fd9b07d35a.jpeg)

Yes, `system.vision.refreshBinding`. Some other functions were also renamed in the move, for clarity/consistency.
