# Error in module Vision when saving the project

**URL:** <https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361>\
**Category:** Ignition\
**Created:** [April 24, 2019, 2:39pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361 "2019-04-24T14:39:42Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![winbetho](https://avatars.discourse-cdn.com/v4/letter/w/ac91a4/32.png) [@winbetho](https://forum.inductiveautomation.com/u/winbetho)\
**Post date:** [April 24, 2019, 2:39pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/1 "2019-04-24T14:39:42Z")

</div>

Hi!  
After I have tested the project to load some data I can’t save the project due to a error in module Vision. below is a clip from the error. Any ideas?

```auto
java.lang.Exception: Error encountered in module "Vision" while saving.
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1265)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleSaveAction(IgnitionDesigner.java:2821)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.access$1300(IgnitionDesigner.java:2230)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler$7.actionPerformed(IgnitionDesigner.java:2401)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at com.jidesoft.plaf.basic.BasicJideButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at com.inductiveautomation.snap.swing.RibsEventQueue.dispatchEvent(RibsEventQueue.java:95)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'children' on object '[ClientTagFolder]com.inductiveautomation.factorypmi.application.sqltags.ClientTagFolder@19cc6ce'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:302)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:327)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:49)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializer.serialize(XMLSerializer.java:515)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializer.serializeBinary(XMLSerializer.java:495)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializer.serializeBinary(XMLSerializer.java:485)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.serializeProjectResource(VisionDesignerImpl.java:938)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.synchAppToProject(VisionDesignerImpl.java:999)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.notifyProjectSaveStart(VisionDesignerImpl.java:558)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1263)
	... 42 more
Caused by: TypeError: unhashable type: 'dict'

	at org.python.core.Py.TypeError(Py.java:235)
	at org.python.core.PyDictionary.dict ___hash__ (PyDictionary.java:724)
	at org.python.core.PyDictionary.hashCode(PyDictionary.java:704)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.safeHashCode(DefaultObjectSerializationDelegate.java:149)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.safeArrayHashCode(DefaultObjectSerializationDelegate.java:164)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.safeHashCode(DefaultObjectSerializationDelegate.java:145)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.safeArrayHashCode(DefaultObjectSerializationDelegate.java:164)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.safeHashCode(DefaultObjectSerializationDelegate.java:145)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.ReferenceTracker$Key.hashCode(ReferenceTracker.java:80)
	at java.util.HashMap.hash(Unknown Source)
	at java.util.HashMap.get(Unknown Source)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.ReferenceTracker.track(ReferenceTracker.java:32)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:46)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeConstructor(DefaultObjectSerializationDelegate.java:374)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeConstructor(DefaultObjectSerializationDelegate.java:365)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:323)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:49)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeConstructor(DefaultObjectSerializationDelegate.java:374)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeConstructor(DefaultObjectSerializationDelegate.java:365)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:323)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:49)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:234)
	at com.inductiveautomation.factorypmi.designer.xmlserialization.ProjectTagDelegate.serializeProperties(ProjectTagDelegate.java:39)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:327)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:49)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.delegates.ArrayListDelegate.serialize(ArrayListDelegate.java:23)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.delegates.ArrayListDelegate.serialize(ArrayListDelegate.java:17)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:49)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:234)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:221)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:278)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:300)
	... 51 more

Ignition v7.9.7 (b2018032914)
Java: Oracle Corporation 1.8.0_151

```

---

<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 24, 2019, 3:21pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/2 "2019-04-24T15:21:10Z")

</div>

Is this in 7.X, or 8.0? Are you doing anything with scripting and setting values on client tags? Could you get in contact with support?

---

<div class="post-metadata">

**Author:** ![winbetho](https://avatars.discourse-cdn.com/v4/letter/w/ac91a4/32.png) [@winbetho](https://forum.inductiveautomation.com/u/winbetho)\
**Post date:** [April 25, 2019, 5:47am UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/3 "2019-04-25T05:47:00Z")

</div>

Hi, I’m running 7.9.7. The project is not created by me. I been asked to use a copy of it do some changes.  
But yes, there is client tags and they are dataset’s.

It is only after i have run the project in the client this error occurs. If I open it and do some changes I can save it without any problems, it is just when I have swithed over to preview and do some tasks.

---

<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 25, 2019, 2:23pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/4 "2019-04-25T14:23:35Z")

</div>

Okay, so my educated guess at what’s happening is there’s a script somewhere that’s writing a literal Python dictionary to a client tag’s value (which will work) but you can’t _save_ a window in the designer in that state. If you have a support contract, having a support rep look through your windows is going to be the easiest way to find this out.

If not, or you want to do this manually:

- First, nail down as closely as you can _when_ this occurs. What action do you perform while in preview mode that then makes the window uncloseable?
- One thing that might help with that: once you’re in the broken state, try looking through your client tags and checking the value property on each. If you notice one with an unusual looking display, try Find/Replace (Ctrl + F) through any windows & scripts to see if you can find what’s writing to that client tag.
- Update the logic that’s writing dictionaries to client tags to either A: not do that at all or B: never do that in the designer.

---

<div class="post-metadata">

**Author:** ![winbetho](https://avatars.discourse-cdn.com/v4/letter/w/ac91a4/32.png) [@winbetho](https://forum.inductiveautomation.com/u/winbetho)\
**Post date:** [April 25, 2019, 2:50pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/5 "2019-04-25T14:50:50Z")

</div>

Thanks for the tips!

I found where the problem was, a client tag was loaded as a dict dataset. When I manually empty that tag there is no problem to save the project.

What is the best way to by a button script write a empty dataset to that tag? Will be handy to have while i’m working with it.

---

<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 25, 2019, 3:14pm UTC](https://forum.inductiveautomation.com/t/error-in-module-vision-when-saving-the-project/24361/6 "2019-04-25T15:14:47Z")

</div>

> [@winbetho](#):
>
> What is the best way to by a button script write a empty dataset to that tag? Will be handy to have while i’m working with it.

`system.tag.write(<tagpath>, system.dataset.toDataSet([],[]))`
