# Information Required for Alarm Pipeline

**URL:** <https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252>\
**Category:** Ignition\
**Created:** [October 7, 2025, 10:12pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252 "2025-10-07T22:12:26Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [October 7, 2025, 10:12pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/1 "2025-10-07T22:12:26Z")

</div>

Exactly what information do I need to extract/supply for a calculated contact roster in the notification block? I can script getting all user info and compiling it fairy easily, but what I don’t know is what information is actually needed. I am using email notification but email is not one of the items in dictionary for user properties when I use `system.user.getUser()` I only get `username`, `firstname`, `lastname`, and a `roles` list.

Do I need to pass the email when I return the roster, or is only the username required and it’ll match the username to the email?

---

<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:** [October 7, 2025, 10:32pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/2 "2025-10-07T22:32:25Z")

</div>

You must construct a valid enough object to notify - the only thing that **really** matters is the email (or other contact info). The entire point of the calculated roster type is that it doesn't rely on the user source "knowing" anything and allows you to notify any arbitrary set of contact information/retrieve that information from any source.

---

<div class="post-metadata">

**Author:** ![anjoroge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/anjoroge/32/6698_2.png) [@anjoroge](https://forum.inductiveautomation.com/u/anjoroge)\
**Post date:** [October 7, 2025, 10:40pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/3 "2025-10-07T22:40:15Z")

</div>

If you need more information on how to create a script that returns a list of dictionaries you can use this [Notification Block | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.3/ignition-modules/alarm-notification/alarm-notification-pipelines/pipeline-blocks/notification-block#calculated-rosters)

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [October 7, 2025, 11:37pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/4 "2025-10-07T23:37:55Z")

</div>

Then how do I get the email from the existing users in a user source? I’m using a calculated roster to filter based on role(s).

---

<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:** [October 7, 2025, 11:48pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/5 "2025-10-07T23:48:56Z")

</div>

Some possible inspiration in this thread:

> [@Combing multiple rosters to a single roster](https://forum.inductiveautomation.com/t/combing-multiple-rosters-to-a-single-roster/71349/7):
>
> Your code has a lot of problems. Chiefly: You're not returning the contact infos as a list of possible contact infos You're not differentiating between SMS, email, or phone numbers, which you would want to do. You don't need to call system.user.getUser if you use system.roster.getRoster(), which directly returns User objects Hardcoding in default to the system.user.getUser function is also a bad idea. You're returning in the wrong format anyways: you're returning something like: [ { "Maint…

Basically you interrogate the user source using the system functions then build that up into a response.

Put together, something like this:

```python
def getUsersWithRole(userSource, role):
	return filter(
		lambda u: role in u.roles,
		system.user.getUsers(userSource)
	)

return [
	dict(
		username = user.get(user.Username),
		**{ci.contactType: ci.value for ci in user.contactInfo}
	)
	for user in getUsersWithRole("myUserSource", "administrator")
]

```

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [October 8, 2025, 1:12pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/6 "2025-10-08T13:12:21Z")

</div>

Right, that’s what I am doing but what I’m saying is that it appears that `email` is not included in the returned user info from the system function

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

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

Using your code, it does seem to successfully get the contact info but the `contactInfo` attribute seems to come out of nowhere. Why isn’t it displayed in the list?

---

<div class="post-metadata">

**Author:** ![CalebM](https://avatars.discourse-cdn.com/v4/letter/c/71c47a/32.png) [@CalebM](https://forum.inductiveautomation.com/u/CalebM)\
**Post date:** [October 8, 2025, 1:51pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/7 "2025-10-08T13:51:06Z")

</div>

It’s a [User object](https://www.docs.inductiveautomation.com/docs/8.1/appendix/reference-pages/scripting-object-reference#users), for whatever reason the contact info isn’t included in the repr method.

---

<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:** [October 8, 2025, 2:01pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/8 "2025-10-08T14:01:01Z")

</div>

Contact Info is a nested list in the user object.

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [October 8, 2025, 2:12pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/9 "2025-10-08T14:12:19Z")

</div>

Would be nice if the documentation listed all attributes of the user object

---

<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:** [October 8, 2025, 2:15pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/10 "2025-10-08T14:15:31Z")

</div>

The `getContactInfo()` method is documented. 🤷‍♂️

Or perhaps you are confused by jython's automatic conversion of NetBeans-style getter methods into implicit properties? (Which is why `.contactInfo` works.)

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [October 8, 2025, 2:17pm UTC](https://forum.inductiveautomation.com/t/information-required-for-alarm-pipeline/111252/11 "2025-10-08T14:17:13Z")

</div>

> [@paul-griffith](#):
>
> ```python
> def getUsersWithRole(userSource, role):
> return filter(
> lambda u: role in u.roles,
> system.user.getUsers(userSource)
> )
> 
> return [
> dict(
> username = user.get(user.Username),
> **{ci.contactType: ci.value for ci in user.contactInfo}
> )
> for user in getUsersWithRole("myUserSource", "administrator")
> ]
> 
> ```

fwiw this works, but runs into an issue if there’s more than one email
