# GatewayException: Error serializing parameters when passing Python function into message payload

**URL:** <https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [July 7, 2025, 8:02pm UTC](https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201 "2025-07-07T20:02:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zachary\_Zipper](https://avatars.discourse-cdn.com/v4/letter/z/bbe5ce/32.png) [@Zachary\_Zipper](https://forum.inductiveautomation.com/u/Zachary_Zipper)\
**Post date:** [July 7, 2025, 8:02pm UTC](https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201/1 "2025-07-07T20:02:51Z")

</div>

I attempted to create a gateway event message so I could send a message and run scripts on the gateway scope through the designer. Here is the gateway script:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/9/89b36bcbf72ad5c2e0526e0776044a03e3ad7552.png)

However, when testing this in the script console I got the below error. Is this just not possible to do?

edit: would probably be helpful to include what I have in the script console

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/b/0b11fbdcf45f7a2918cb9aa4ce6b8efe8bc186e7.png)

version: Ignition 8.1.48

```python
Java Traceback:
Traceback (most recent call last):
  File "<input>", line 4, in <module>
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:360)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:965)

	at com.inductiveautomation.ignition.client.script.DesignerSystemUtilities.sendMessageInternal(DesignerSystemUtilities.java:211)

	at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendMessage(SystemUtilities.java:817)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

com.inductiveautomation.ignition.client.gateway_interface.GatewayException: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Error serializing parameters.

	at org.python.core.Py.JavaError(Py.java:545)

	at org.python.core.Py.JavaError(Py.java:536)

	at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:192)

	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction. __call__ (ScriptManager.java:553)

	at org.python.core.PyObject. __call__ (PyObject.java:400)

	at org.python.pycode._pyx269.f$0(<input>:4)

	at org.python.pycode._pyx269.call_function(<input>)

	at org.python.core.PyTableCode.call(PyTableCode.java:173)

	at org.python.core.PyCode.call(PyCode.java:18)

	at org.python.core.Py.runCode(Py.java:1703)

	at org.python.core.Py.exec(Py.java:1747)

	at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:277)

	at org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:130)

	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:628)

	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:616)

	at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)

	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

	at java.desktop/javax.swing.SwingWorker.run(Unknown Source)

	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

	at java.base/java.lang.Thread.run(Unknown Source)

Caused by: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Error serializing parameters.

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:360)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:965)

	at com.inductiveautomation.ignition.client.script.DesignerSystemUtilities.sendMessageInternal(DesignerSystemUtilities.java:211)

	at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendMessage(SystemUtilities.java:817)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:190)

	... 18 more

Caused by: java.io.NotSerializableException: org.python.core.ReflectedArgs

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeArray(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at java.base/java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source)

	at java.base/jdk.internal.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at java.base/java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeSerialData(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject0(Unknown Source)

	at java.base/java.io.ObjectOutputStream.writeObject(Unknown Source)

	at com.inductiveautomation.ignition.common.Base64.encodeObject(Base64.java:496)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface$InvokeMessage.setArgs(GatewayInterface.java:1382)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:963)

	... 25 more

Traceback (most recent call last):
  File "<input>", line 4, in <module>
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:360)

	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:965)

	at com.inductiveautomation.ignition.client.script.DesignerSystemUtilities.sendMessageInternal(DesignerSystemUtilities.java:211)

	at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendMessage(SystemUtilities.java:817)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

com.inductiveautomation.ignition.client.gateway_interface.GatewayException: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Error serializing parameters.

```

---

<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:** [July 7, 2025, 8:13pm UTC](https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201/2 "2025-07-07T20:13:03Z")

</div>

Jython function objects are not transmissible over the network connection between designer and gateway. Code must already exist in the gateway to be callable.

{ _Psssst!_ [system.util.runInGateway](https://www.automation-pros.com/toolkit/doc/utility.html#runingateway) }

---

<div class="post-metadata">

**Author:** ![Zachary\_Zipper](https://avatars.discourse-cdn.com/v4/letter/z/bbe5ce/32.png) [@Zachary\_Zipper](https://forum.inductiveautomation.com/u/Zachary_Zipper)\
**Post date:** [July 7, 2025, 9:16pm UTC](https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201/3 "2025-07-07T21:16:13Z")

</div>

I tried putting the function in a project library script and got the same error. Does the project that the library script lives in need to be configured as the Gateway Scripting Project for my script to work?

---

<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:** [July 7, 2025, 9:20pm UTC](https://forum.inductiveautomation.com/t/gatewayexception-error-serializing-parameters-when-passing-python-function-into-message-payload/108201/4 "2025-07-07T21:20:18Z")

</div>

No, just in the same project as the message handler. (Look for errors in your gateway log.)
