# Module Development

**URL:** https://forum.inductiveautomation.com/c/module-development/7.md?page=8

[Latest](https://forum.inductiveautomation.com/latest.md) · [Categories](https://forum.inductiveautomation.com/categories.md) · [Tags](https://forum.inductiveautomation.com/tags.md)

**Page:** 9

---

## [Create Customizer with Property dropdown](https://forum.inductiveautomation.com/t/create-customizer-with-property-dropdown/106306)

<div class="topic-metadata">

**Author:** [@Porter\_Ellis](https://forum.inductiveautomation.com/u/Porter_Ellis)\
**Replies:** 51\
**Last updated:** [August 19, 2025, 4:29pm UTC](https://forum.inductiveautomation.com/t/create-customizer-with-property-dropdown/106306 "2025-08-19T16:29:41Z")

</div>

I am creating a custom vision component that pushes values into the properties of other vision components on the window. Normally to do this, I would have to set up an expression on the downstream component property to a…

---

## [Force gateway back into trial expired state](https://forum.inductiveautomation.com/t/force-gateway-back-into-trial-expired-state/109682)

<div class="topic-metadata">

**Author:** [@liam1](https://forum.inductiveautomation.com/u/liam1)\
**Replies:** 2\
**Last updated:** [August 13, 2025, 2:52pm UTC](https://forum.inductiveautomation.com/t/force-gateway-back-into-trial-expired-state/109682 "2025-08-13T14:52:20Z")

</div>

Hi all, I am testing the licensing system in my module and don’t want to wait 2 hours for the gateway trial to expire , is there a way to force a trial expired state? The gateway is in a docker container , would I need …

---

## [Unable to specify user who acknowledged the alarm](https://forum.inductiveautomation.com/t/unable-to-specify-user-who-acknowledged-the-alarm/109442)

<div class="topic-metadata">

**Author:** [@constantv](https://forum.inductiveautomation.com/u/constantv)\
**Replies:** 2\
**Last updated:** [August 10, 2025, 1:45pm UTC](https://forum.inductiveautomation.com/t/unable-to-specify-user-who-acknowledged-the-alarm/109442 "2025-08-10T13:45:56Z")

</div>

In my module, I need to specify the user that acknowledged the alarm. In looking at SQL, it does not look like the ackUser is being captured at all. Below is my code: ackUserName = 'test user' EventData alarmEventData =…

---

## [What is the best way to query all tags using a certain HistoryProvider?](https://forum.inductiveautomation.com/t/what-is-the-best-way-to-query-all-tags-using-a-certain-historyprovider/109506)

<div class="topic-metadata">

**Author:** [@andrew.jank](https://forum.inductiveautomation.com/u/andrew.jank)\
**Replies:** 0\
**Last updated:** [August 7, 2025, 9:30pm UTC](https://forum.inductiveautomation.com/t/what-is-the-best-way-to-query-all-tags-using-a-certain-historyprovider/109506 "2025-08-07T21:30:51Z")

</div>

I am trying to get all the tags using my history provider and send them to my historian during startup. Is there a better way I can achieve this than the following? I am doing this for each tag provider during startup() …

---

## [Unlock components in module with prefine code](https://forum.inductiveautomation.com/t/unlock-components-in-module-with-prefine-code/109436)

<div class="topic-metadata">

**Author:** [@liam1](https://forum.inductiveautomation.com/u/liam1)\
**Replies:** 1\
**Last updated:** [August 6, 2025, 5:40pm UTC](https://forum.inductiveautomation.com/t/unlock-components-in-module-with-prefine-code/109436 "2025-08-06T17:40:33Z")

</div>

Hi all, I have build a module which contains 3 components, I want to be able to unlock certain components by typing in a predefined code. Is this possible do with the ignition licensing system or must a create my own cu…

---

## [Creating a gateway function that calls a javascript function](https://forum.inductiveautomation.com/t/creating-a-gateway-function-that-calls-a-javascript-function/109374)

<div class="topic-metadata">

**Author:** [@mykhaylo.hryhoryev](https://forum.inductiveautomation.com/u/mykhaylo.hryhoryev)\
**Replies:** 2\
**Last updated:** [August 5, 2025, 3:20pm UTC](https://forum.inductiveautomation.com/t/creating-a-gateway-function-that-calls-a-javascript-function/109374 "2025-08-05T15:20:12Z")

</div>

I am trying to implement a solution to display toast notifications using the library: Is there a way to implement a gateway function, like toastify(message), that I can call from my Python scripts to send a message to …

---

## [Device Driver Development / Device API Access](https://forum.inductiveautomation.com/t/device-driver-development-device-api-access/109287)

<div class="topic-metadata">

**Author:** [@Roger\_Duran](https://forum.inductiveautomation.com/u/Roger_Duran)\
**Replies:** 2\
**Last updated:** [August 2, 2025, 4:22pm UTC](https://forum.inductiveautomation.com/t/device-driver-development-device-api-access/109287 "2025-08-02T16:22:49Z")

</div>

Hi everyone, I've developed a device driver module for Ignition 8.1.44 using the ManagedTagProvider API, and it's working well for device monitoring but I'm looking to enhance it to appear in the OPC UA Device Connectio…

---

## [How to store MinMax aggregate values as QualifiedValues in ProcessedHistoryColumn?](https://forum.inductiveautomation.com/t/how-to-store-minmax-aggregate-values-as-qualifiedvalues-in-processedhistorycolumn/109099)

<div class="topic-metadata">

**Author:** [@andrew.jank](https://forum.inductiveautomation.com/u/andrew.jank)\
**Replies:** 1\
**Last updated:** [August 1, 2025, 6:50pm UTC](https://forum.inductiveautomation.com/t/how-to-store-minmax-aggregate-values-as-qualifiedvalues-in-processedhistorycolumn/109099 "2025-08-01T18:50:14Z")

</div>

Continuing the discussion from Expected return format for MinMax aggregate using a Custom History Provider?: I am trying to display both a minimum and maximum data for each timestamp in a table. I am adding both Minimum…

---

## [HistoryQueryExecutor MinMax return format?](https://forum.inductiveautomation.com/t/historyqueryexecutor-minmax-return-format/66440)

<div class="topic-metadata">

**Author:** [@jpark](https://forum.inductiveautomation.com/u/jpark)\
**Replies:** 2\
**Last updated:** [August 1, 2025, 6:51pm UTC](https://forum.inductiveautomation.com/t/historyqueryexecutor-minmax-return-format/66440 "2025-08-01T18:51:07Z")

</div>

I am unable to get a custom HistoryQueryExecutor to return multiple values with the same time stamp when MinMax is selected. List of Qualified Values is \[\[10.0, Good, Sun Nov 13 11:15:46 PST 2022 (1668366946147)\], \[15.…

---

## [Expected return format for MinMax aggregate using a Custom History Provider?](https://forum.inductiveautomation.com/t/expected-return-format-for-minmax-aggregate-using-a-custom-history-provider/108239)

<div class="topic-metadata">

**Author:** [@andrew.jank](https://forum.inductiveautomation.com/u/andrew.jank)\
**Replies:** 6\
**Last updated:** [August 1, 2025, 6:50pm UTC](https://forum.inductiveautomation.com/t/expected-return-format-for-minmax-aggregate-using-a-custom-history-provider/108239 "2025-08-01T18:50:41Z")

</div>

I am trying to implement a Custom History Provider. I cannot get the correct values (1 for each) to return in MinMax when displaying the data to a chart or a table. Expected: (using SQL Lite historian) Actual: (My H…

---

## [Kotlin coroutines and SharedFlow](https://forum.inductiveautomation.com/t/kotlin-coroutines-and-sharedflow/108913)

<div class="topic-metadata">

**Author:** [@cos](https://forum.inductiveautomation.com/u/cos)\
**Replies:** 1\
**Last updated:** [July 24, 2025, 5:55pm UTC](https://forum.inductiveautomation.com/t/kotlin-coroutines-and-sharedflow/108913 "2025-07-24T17:55:26Z")

</div>

Is anyone using coroutines and SharedFlow? Or will we better off sticking with execution managers? Any tips or examples for a module that needs to await tcp messages and do something™ when there is new data? I've s…

---

## [DeveloperModuleLoadingServlet](https://forum.inductiveautomation.com/t/developermoduleloadingservlet/108901)

<div class="topic-metadata">

**Author:** [@Jonathan\_Meredith](https://forum.inductiveautomation.com/u/Jonathan_Meredith)\
**Replies:** 3\
**Last updated:** [July 24, 2025, 5:48pm UTC](https://forum.inductiveautomation.com/t/developermoduleloadingservlet/108901 "2025-07-24T17:48:34Z")

</div>

For my module development, I am using a mixture of the Ignition Maven Plugin and the Gradle Module Plugin. I know there are tasks there to deploy to a Gateway running in "Development" mode. The issue that I am running …

---

## [How to get tag configuration in JAVA module?](https://forum.inductiveautomation.com/t/how-to-get-tag-configuration-in-java-module/108889)

<div class="topic-metadata">

**Author:** [@ivan.deandaruiz](https://forum.inductiveautomation.com/u/ivan.deandaruiz)\
**Replies:** 1\
**Last updated:** [July 24, 2025, 2:45pm UTC](https://forum.inductiveautomation.com/t/how-to-get-tag-configuration-in-java-module/108889 "2025-07-24T14:45:37Z")

</div>

In python we can do system.tag.getConfiguration to get a tag's configuration. What is the equivalent in the module gateway? The TagManager object does not provide the functionality.

---

## [Module lifecycle](https://forum.inductiveautomation.com/t/module-lifecycle/108827)

<div class="topic-metadata">

**Author:** [@Thomas\_Mulcahy](https://forum.inductiveautomation.com/u/Thomas_Mulcahy)\
**Replies:** 8\
**Last updated:** [July 23, 2025, 1:53pm UTC](https://forum.inductiveautomation.com/t/module-lifecycle/108827 "2025-07-23T13:53:42Z")

</div>

Hi, So, I have 2 modules developed. module A and module B. Module B is dependant on module A. Module A declares some APIs that I need to use in module B. I was assuming that when modules are loaded the setup() method f…

---

## [Question about signing a module following tutorial](https://forum.inductiveautomation.com/t/question-about-signing-a-module-following-tutorial/108774)

<div class="topic-metadata">

**Author:** [@Kenny\_Chen](https://forum.inductiveautomation.com/u/Kenny_Chen)\
**Replies:** 8\
**Last updated:** [July 23, 2025, 11:06am UTC](https://forum.inductiveautomation.com/t/question-about-signing-a-module-following-tutorial/108774 "2025-07-23T11:06:42Z")

</div>

Following the tutorial : Sign a Module | Ignition SDK Programmer's Guide. Where is the module-signer.jar is? Is it about downloading the zip of code in github and changing the postfix of the folder to .jar? Because it se…

---

## [Get open views in designer context](https://forum.inductiveautomation.com/t/get-open-views-in-designer-context/108749)

<div class="topic-metadata">

**Author:** [@aaronrai24](https://forum.inductiveautomation.com/u/aaronrai24)\
**Replies:** 3\
**Last updated:** [July 22, 2025, 8:52pm UTC](https://forum.inductiveautomation.com/t/get-open-views-in-designer-context/108749 "2025-07-22T20:52:12Z")

</div>

I've been digging through the SDK trying to find how to get all the open views in the perspective workspace and have come up short, what I'd like to do is get the ViewConfig and then be able to change the persistence and…

---

## [Module signing questions](https://forum.inductiveautomation.com/t/module-signing-questions/20089)

<div class="topic-metadata">

**Author:** [@pascal](https://forum.inductiveautomation.com/u/pascal)\
**Replies:** 2\
**Last updated:** [July 22, 2025, 4:09pm UTC](https://forum.inductiveautomation.com/t/module-signing-questions/20089 "2025-07-22T16:09:12Z")

</div>

---

## [Does Ignition have a file size limit for email attachments?](https://forum.inductiveautomation.com/t/does-ignition-have-a-file-size-limit-for-email-attachments/108543)

<div class="topic-metadata">

**Author:** [@alvaro.marron](https://forum.inductiveautomation.com/u/alvaro.marron)\
**Replies:** 2\
**Last updated:** [July 16, 2025, 4:11pm UTC](https://forum.inductiveautomation.com/t/does-ignition-have-a-file-size-limit-for-email-attachments/108543 "2025-07-16T16:11:06Z")

</div>

Hi everyone, I'm working with Ignition 8.1.38, and I have a scheduled script that exports a .csv file (around 10 MB) and sends it via email using an Office365 SMTP profile (smtp.office365.com, port 587, STARTTLS). Duri…

---

## [8.0 Listener for history enabled on tag?](https://forum.inductiveautomation.com/t/8-0-listener-for-history-enabled-on-tag/34352)

<div class="topic-metadata">

**Author:** [@jpark](https://forum.inductiveautomation.com/u/jpark)\
**Replies:** 3\
**Last updated:** [July 8, 2025, 5:56pm UTC](https://forum.inductiveautomation.com/t/8-0-listener-for-history-enabled-on-tag/34352 "2025-07-08T17:56:48Z")

</div>

Is there a listener available on the gateway for when history gets enabled/disabled on a tag? Or when a tag gets updated? I need to run a function when history setting gets modified for my custom datasink. @Kevin.Herro…

---

## [Accessing persistent record in designer context](https://forum.inductiveautomation.com/t/accessing-persistent-record-in-designer-context/107974)

<div class="topic-metadata">

**Author:** [@Anandanatarajan\_s](https://forum.inductiveautomation.com/u/Anandanatarajan_s)\
**Replies:** 1\
**Last updated:** [July 1, 2025, 1:36pm UTC](https://forum.inductiveautomation.com/t/accessing-persistent-record-in-designer-context/107974 "2025-07-01T13:36:53Z")

</div>

I am trying to develop an ignition module and it requires some configuration details to work like ipaddress, i have using the gateway webpage example developed a module and it is showing in the gateway config screen as s…

---

## [Request: Ability to Fire Component Events using String Payloads](https://forum.inductiveautomation.com/t/request-ability-to-fire-component-events-using-string-payloads/107911)

<div class="topic-metadata">

**Author:** [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Replies:** 7\
**Last updated:** [July 1, 2025, 12:16am UTC](https://forum.inductiveautomation.com/t/request-ability-to-fire-component-events-using-string-payloads/107911 "2025-07-01T00:16:52Z")

</div>

When sending large messages containing user-provided Python content to Perspective components/pages, the overhead of creating a single use JsonObject can be quite large, just for it to be immediately serialized into a st…

---

## [Weird question/long shot](https://forum.inductiveautomation.com/t/weird-question-long-shot/107813)

<div class="topic-metadata">

**Author:** [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Replies:** 15\
**Last updated:** [June 26, 2025, 5:15am UTC](https://forum.inductiveautomation.com/t/weird-question-long-shot/107813 "2025-06-26T05:15:05Z")

</div>

Is there any way for an ignition module to get access to the perspective renderer in an iframe? XY problem -- i've got view jsons that might be changing pretty rapidly, and I want to see how they'd render in the designe…

---

## [Custom Config pages](https://forum.inductiveautomation.com/t/custom-config-pages/107656)

<div class="topic-metadata">

**Author:** [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Replies:** 2\
**Last updated:** [June 22, 2025, 3:44pm UTC](https://forum.inductiveautomation.com/t/custom-config-pages/107656 "2025-06-22T15:44:56Z")

</div>

Hi all, I'm currently working on a driver module, I've finished most parts that I wanted to, but one last thing is remaining: I would like to extend my Config Page with a Button; "Discover...". If a user clicks on that…

---

## [Resize handler not working in designer for custom perspective component](https://forum.inductiveautomation.com/t/resize-handler-not-working-in-designer-for-custom-perspective-component/107355)

<div class="topic-metadata">

**Author:** [@jake.bierman](https://forum.inductiveautomation.com/u/jake.bierman)\
**Replies:** 4\
**Last updated:** [June 13, 2025, 4:49am UTC](https://forum.inductiveautomation.com/t/resize-handler-not-working-in-designer-for-custom-perspective-component/107355 "2025-06-13T04:49:43Z")

</div>

Hi guys, fairly new to Ignition still but I have been playing around a lot with a custom module I have based on the perspective component example on github. I have been combining bits I found on here and github to get as…

---

## [Perspective Component Detect Theme Change](https://forum.inductiveautomation.com/t/perspective-component-detect-theme-change/107242)

<div class="topic-metadata">

**Author:** [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Replies:** 4\
**Last updated:** [June 12, 2025, 10:35pm UTC](https://forum.inductiveautomation.com/t/perspective-component-detect-theme-change/107242 "2025-06-12T22:35:32Z")

</div>

I need to programatically set the theme on a component I'm currently working on, and was wondering the best way to detect it? I was trying the code below const \[theme, setTheme\] = useState(store.props.read("session.…

---

## [Adding an object to an array of props](https://forum.inductiveautomation.com/t/adding-an-object-to-an-array-of-props/107234)

<div class="topic-metadata">

**Author:** [@aaronrai24](https://forum.inductiveautomation.com/u/aaronrai24)\
**Replies:** 1\
**Last updated:** [June 10, 2025, 4:53pm UTC](https://forum.inductiveautomation.com/t/adding-an-object-to-an-array-of-props/107234 "2025-06-10T16:53:17Z")

</div>

I am working on integrating a custom component into perspective and was trying to figure out how to add an object when the user clicks the "+" on array of props, similar to how the flex repeater automatically adds an obj…

---

## [Clarification on GatewayContext Data Storage](https://forum.inductiveautomation.com/t/clarification-on-gatewaycontext-data-storage/107207)

<div class="topic-metadata">

**Author:** [@j.kennedy1](https://forum.inductiveautomation.com/u/j.kennedy1)\
**Replies:** 2\
**Last updated:** [June 10, 2025, 10:47am UTC](https://forum.inductiveautomation.com/t/clarification-on-gatewaycontext-data-storage/107207 "2025-06-10T10:47:32Z")

</div>

In later versions of the SDK documentation I'm not able to find methods for accessing the data directories of Ignition. Specifically this guide: Storing Configuration Data | Ignition SDK Programmer's Guide mentions Gate…

---

## [Upload file with RecordEditForm](https://forum.inductiveautomation.com/t/upload-file-with-recordeditform/99298)

<div class="topic-metadata">

**Author:** [@Rez\_S](https://forum.inductiveautomation.com/u/Rez_S)\
**Replies:** 7\
**Last updated:** [December 2, 2024, 8:25pm UTC](https://forum.inductiveautomation.com/t/upload-file-with-recordeditform/99298 "2024-12-02T20:25:51Z")

</div>

Hi There, I am trying to give the user the option to upload their SSL certificates in the ignition module. I am using RecordEditForm. in my PersistentRecord, I have fields: public static final StringField KeystorePat…

---

## [PersistentRecord + CheckBoxMultipleChoice](https://forum.inductiveautomation.com/t/persistentrecord-checkboxmultiplechoice/107095)

<div class="topic-metadata">

**Author:** [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Replies:** 1\
**Last updated:** [June 5, 2025, 5:51pm UTC](https://forum.inductiveautomation.com/t/persistentrecord-checkboxmultiplechoice/107095 "2025-06-05T17:51:02Z")

</div>

I'd like to show a Wicket CheckBoxMultipleChoice on my OPC UA driver's edit page, something akin to the roles selector for local users. Does this sound like something I can do without giving myself brain damage? Or mayb…

---

## [getFullPath is null for NodeDescription](https://forum.inductiveautomation.com/t/getfullpath-is-null-for-nodedescription/106922)

<div class="topic-metadata">

**Author:** [@Zhou\_Zeng](https://forum.inductiveautomation.com/u/Zhou_Zeng)\
**Replies:** 6\
**Last updated:** [June 4, 2025, 3:52pm UTC](https://forum.inductiveautomation.com/t/getfullpath-is-null-for-nodedescription/106922 "2025-06-04T15:52:33Z")

</div>

i tried calling getFullPath from a NodeDescription object, but it returns null. Does anyone know if I am doing something wrong here? Results\<NodeDescription\> browseResults = context.getTagManager().browseAsync(tagPath, …

[Previous page](https://forum.inductiveautomation.com/c/module-development/7.md?page=7)

[Next page](https://forum.inductiveautomation.com/c/module-development/7.md?page=9)
