# \[IGN-16242\]system.util.queryStatus doesn't return AlarmQueryResult

**URL:** <https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798>\
**Category:** Ignition\
**Tags:** scripting, ignition83\
**Created:** [December 12, 2025, 10:45pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798 "2025-12-12T22:45:04Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![bghunt](https://avatars.discourse-cdn.com/v4/letter/b/8e7dd6/32.png) [@bghunt](https://forum.inductiveautomation.com/u/bghunt)\
**Post date:** [December 12, 2025, 10:45pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/1 "2025-12-12T22:45:04Z")

</div>

From the docs we're told that `system.util.queryStatus()` returns `AlarmQueryResult` see [here](https://docs.inductiveautomation.com/docs/8.3/appendix/scripting-functions/system-alarm/system-alarm-queryStatus#returns)

When I run it in the design console I get this:

```python
#Pull all alarms
alarms = system.alarm.queryStatus(state=["ActiveUnacked", "ActiveAcked"], source=["*AJAX Alarm*"])
type(alarms)
alarms.getDataset()

# I get this
>>> 
<type 'java.util.Collections$UnmodifiableRandomAccessList'> # not AlarmQueryResult!!!
Traceback (most recent call last):
  File "<input>", line 4, in <module>
AttributeError: 'java.util.Collections$UnmodifiableRandomAccessList' object has no attribute 'getDataset'
>>>

```

Am I missing something? I need to turn the alarms into a dataset

I'm on 8.3.1

---

<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:** [December 12, 2025, 11:18pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/2 "2025-12-12T23:18:13Z")

</div>

This is a bug caused by some "under the hood" changes from 8.3. We're tracking it internally at a fairly high priority - it'll likely be fixed in 8.3.4 or shortly therafter.

In the meantime, you could try this as a workaround:

```python
from com.inductiveautomation.ignition.common.alarming.query import AlarmQueryResultImpl

def datasetFromAlarms(alarms, historical=False):
		inner = AlarmQueryResultImpl(historical) # pass True if using queryJournal
		inner.extend(alarms)
		return inner.dataset

alarms = system.alarm.queryStatus(state=["ActiveUnacked", "ActiveAcked"])
ds = datasetFromAlarms(alarms)

```

---

<div class="post-metadata">

**Author:** ![bghunt](https://avatars.discourse-cdn.com/v4/letter/b/8e7dd6/32.png) [@bghunt](https://forum.inductiveautomation.com/u/bghunt)\
**Post date:** [December 17, 2025, 5:30pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/3 "2025-12-17T17:30:47Z")

</div>

Great! thanks for the workaround

---

<div class="post-metadata">

**Author:** ![WillMT10](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WillMT10](https://forum.inductiveautomation.com/u/WillMT10)\
**Post date:** [December 17, 2025, 6:41pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/4 "2025-12-17T18:41:21Z")

</div>

Running into this same issue on 8.3.2. When I run the workaround in the Script Console I’m getting a `ClassCastException`. Something obvious I’m doing wrong?

> **Java Traceback**
>
> ```python
> Traceback (most recent call last):
> File "<input>", line 4, in <module>
> at com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResultImpl.buildFrom(AlarmQueryResultImpl.java:60)
> 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)
> java.lang.ClassCastException: java.lang.ClassCastException: class com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent cannot be cast to class com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult (com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent and com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult are in unnamed module of loader java.net.URLClassLoader @124d25a0)
> 
> 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 org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:208)
> at org.python.core.PyObject. __call__ (PyObject.java:461)
> at org.python.core.PyObject. __call__ (PyObject.java:465)
> at org.python.pycode._pyx125.f$0(<input>:5)
> at org.python.pycode._pyx125.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: java.lang.ClassCastException: class com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent cannot be cast to class com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult (com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent and com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult are in unnamed module of loader java.net.URLClassLoader @124d25a0)
> at com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResultImpl.buildFrom(AlarmQueryResultImpl.java:60)
> 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)
> ... 19 more
> Traceback (most recent call last):
> File "<input>", line 4, in <module>
> at com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResultImpl.buildFrom(AlarmQueryResultImpl.java:60)
> 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)
> java.lang.ClassCastException: java.lang.ClassCastException: class com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent cannot be cast to class com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult (com.inductiveautomation.ignition.common.alarming.BasicAlarmEvent and com.inductiveautomation.ignition.common.alarming.query.AlarmQueryResult are in unnamed module of loader java.net.URLClassLoader @124d25a0)
> 
> ```

> **Test Code**
>
> ```python
> from com.inductiveautomation.ignition.common.alarming.query import AlarmQueryResultImpl
> 
> alarms = system.alarm.queryStatus(state=["ActiveUnacked", "ActiveAcked"])
> AlarmQueryResultImpl.buildFrom(alarms)
> ds = alarms.getDataset()
> 
> ```

---

<div class="post-metadata">

**Author:** ![bghunt](https://avatars.discourse-cdn.com/v4/letter/b/8e7dd6/32.png) [@bghunt](https://forum.inductiveautomation.com/u/bghunt)\
**Post date:** [December 17, 2025, 6:54pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/5 "2025-12-17T18:54:19Z")

</div>

You'll need to query your own journal in the source keyword argument

you haven't handed your query a source yet

---

<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:** [December 17, 2025, 6:58pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/6 "2025-12-17T18:58:05Z")

</div>

My bad, my (untested) workaround was flawed because I misunderstood what the 'buildFrom' method was for.

Try this (original post updated as well):

```python
from com.inductiveautomation.ignition.common.alarming.query import AlarmQueryResultImpl

def datasetFromAlarms(alarms, historical=False):
		inner = AlarmQueryResultImpl(historical) # pass True if using queryJournal
		inner.extend(alarms)
		return inner.dataset

alarms = system.alarm.queryStatus(state=["ActiveUnacked", "ActiveAcked"])
ds = datasetFromAlarms(alarms)

```

---

<div class="post-metadata">

**Author:** ![WillMT10](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WillMT10](https://forum.inductiveautomation.com/u/WillMT10)\
**Post date:** [December 17, 2025, 7:25pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/7 "2025-12-17T19:25:23Z")

</div>

That did the trick - thanks for the fast fix!

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [February 25, 2026, 3:03pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/8 "2026-02-25T15:03:48Z")

</div>

Hey Paul, will this still work after this bug is fixed?

---

<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:** [February 25, 2026, 4:33pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/9 "2026-02-25T16:33:06Z")

</div>

Good question - yes, it should continue to work, because `public class AlarmQueryResultImpl extends ArrayList<AlarmEvent>`, so even once the `queryStatus` function goes back to properly returning an `AlarmQueryResultImpl` directly the `.extend` call within will still work, since Jython is providing it for any `List`-like.

---

<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:** [March 4, 2026, 5:39pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/10 "2026-03-04T17:39:20Z")

</div>

This bug (and the corresponding issue with Vision's alarm status and journal tables) are fixed in 8.3.4, projected release ~~very soon.~~ today 😃

---

<div class="post-metadata">

**Author:** ![daniel.barber-cironi](https://avatars.discourse-cdn.com/v4/letter/d/e95f7d/32.png) [@daniel.barber-cironi](https://forum.inductiveautomation.com/u/daniel.barber-cironi)\
**Post date:** [May 13, 2026, 3:37pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/11 "2026-05-13T15:37:16Z")

</div>

Heads up, I am still seeing this issue on 8.3.5. I have a basic script similar to the original post where I am trying to use .getDataset() on the result of system.alarm.queryStatus and I am seeing the same issue with the type being "java.util.Collections$UnmodifiableRandomAccessList".

```python
#get my alarm source value
path = "[default]DemoControlModules/Demo_P_AIn/Hi/Alm/Alarms/Alarm.Source"
source = system.tag.readBlocking([path])[0].value

#query the alarm status
alarmQueryResult = system.alarm.queryStatus(source = [source])
print alarmQueryResult

#attempt to use getDataset
if len(alarmQueryResult) > 0:
    eventIds = alarmQueryResult.getDataset()
    print eventIds

```

Gives me the following output:

![image](https://us1.discourse-cdn.com/inductiveautomation/optimized/3X/9/3/932f28e68bfa82f48ac837b408d86d0689e1a4b7_2_690x67.png)

I am running Ignition in the official Inductive Docker container (8.3.5 tag), if that makes any difference.

---

<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:** [May 13, 2026, 4:29pm UTC](https://forum.inductiveautomation.com/t/ign-16242-system-util-querystatus-doesnt-return-alarmqueryresult/112798/12 "2026-05-13T16:29:57Z")

</div>

Thanks for the report. We fixed it in the Vision alarm status and journal tables, but missed the scripting functions due to an oversight. I've filed a new ticket that we'll get fixed soon.
