# Roster Management and system.roster scripting

**URL:** <https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698>\
**Category:** Ignition\
**Created:** [October 15, 2020, 4:25am UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698 "2020-10-15T04:25:13Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![WKetcham](https://avatars.discourse-cdn.com/v4/letter/w/c57346/32.png) [@WKetcham](https://forum.inductiveautomation.com/u/WKetcham)\
**Post date:** [October 15, 2020, 4:25am UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/1 "2020-10-15T04:25:13Z")

</div>

Just upgraded an gateway to 8.0.15 a few weeks ago and we just noticed that the Roster Management component no longer has the ability to remove a user from a roster group?????

I didn't really like the built-in Roster Management component anyways so I decided to create my own using system.roster scripts that were added in 8.0.6. The problem I am having is it throws an error saying

> AttributeError: 'com.inductiveautomation.ignition.common.script.Imm' object has no attribute 'roster'

I have the script scoped in the global project, but system.roster doesn't even come up as an option in the script editor.

Am I missing something (or screwed up this upgrade) or is Ignition having an issue?

Anyone else seen this?

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [October 15, 2020, 2:09pm UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/2 "2020-10-15T14:09:57Z")

</div>

Sounds like something didn’t get loaded correctly. Is your Alarm Notification module up to date and running?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [October 15, 2020, 2:46pm UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/3 "2020-10-15T14:46:44Z")

</div>

> [@WKetcham](#):
>
> I have the script scoped in the global project, but system.roster doesn’t even come up as an option in the script editor.

What does this mean? You may have written the script in a script module in the global project, but where are you _calling_ it from?

---

<div class="post-metadata">

**Author:** ![WKetcham](https://avatars.discourse-cdn.com/v4/letter/w/c57346/32.png) [@WKetcham](https://forum.inductiveautomation.com/u/WKetcham)\
**Post date:** [October 15, 2020, 4:05pm UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/4 "2020-10-15T16:05:30Z")

</div>

Kathy,  
The notification module is up an running correctly. I can add and remove users to an on call roster from the gateway but from the Roster Management component I can add a user but CAN’T remove a user from a roster.

Kevin,  
I have the script defined in the Project Library of the Gateway Scripting Project (“global”). I have tried calling it from a button on a child project and from the scripting console in designer on “global”

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [October 15, 2020, 4:11pm UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/5 "2020-10-15T16:11:24Z")

</div>

> [@WKetcham](#):
>
> I have tried calling it from a button on a child project and from the scripting console in designer on “global”

Well that's your issue. These functions are only scoped to gateway (or Perspective, same-ish thing). You need to call them from something like a tag change script, or more realistically in a message handler you define for some project, which you would then call from the client/designer scope.

---

<div class="post-metadata">

**Author:** ![WKetcham](https://avatars.discourse-cdn.com/v4/letter/w/c57346/32.png) [@WKetcham](https://forum.inductiveautomation.com/u/WKetcham)\
**Post date:** [October 15, 2020, 4:40pm UTC](https://forum.inductiveautomation.com/t/roster-management-and-system-roster-scripting/39698/6 "2020-10-15T16:40:38Z")

</div>

That makes sense, as I was writing my previous reply it suddenly occurred to me that that might be the case. I just miss interpreted something in the documentation on scripting and the Gateway Scripting Project.
