# Automation Professionals' Integration Toolkit Module

**URL:** <https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934>\
**Category:** 3rd Party Modules\
**Tags:** ignition83, scripting, ignition81, perspective, vision\
**Created:** [June 13, 2023, 12:42am UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934 "2023-06-13T00:42:35Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![mdemaris](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mdemaris/32/54639_2.png) [@mdemaris](https://forum.inductiveautomation.com/u/mdemaris)\
**Post date:** [October 10, 2023, 5:23pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/81 "2023-10-10T17:23:41Z")

</div>

Phil,  
Apologies for my ignorance--  
I'm not seeing how I implement this module, as in it's a `.modl` file: where does it go and how does Ignition know it's there for me to use it?

---

<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 10, 2023, 5:24pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/82 "2023-10-10T17:24:21Z")

</div>

You install it like any other module:  
[https://docs.inductiveautomation.com/display/DOC81/Installing+or+Upgrading+a+Module](https://docs.inductiveautomation.com/display/DOC81/Installing+or+Upgrading+a+Module)

---

<div class="post-metadata">

**Author:** ![calimero100582](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/calimero100582/32/18630_2.png) [@calimero100582](https://forum.inductiveautomation.com/u/calimero100582)\
**Post date:** [December 15, 2023, 2:19pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/83 "2023-12-15T14:19:42Z")

</div>

tried the sample view provided, but table.props.data uses table.custom.filteredDS, and table.custom.filteredDS uses table.props.data. I get the error in the screenshot below.

I tried to replace table.props.data for table.custom.rawData in filteredDS, but no luck

Do you have an up to date sample?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/7/17d23e2b7afb3ae83719b9411f79f30e13c58257.png)

---

<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:** [December 15, 2023, 3:15pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/84 "2023-12-15T15:15:14Z")

</div>

Use this. I left a now-broken binding on `filteredDS`.

> **Summary**
>
> ```auto
> {
> "custom": {},
> "params": {},
> "props": {},
> "root": {
> "children": [
> {
> "children": [
> {
> "custom": {
> "filtered": [
> "Folsom",
> "Helsinki",
> "San Francisco",
> "Washington, DC",
> "Wellington",
> "Sydney",
> "Wellington"
> ],
> "filteredDS": {
> "$": [
> "ds",
> 192,
> 1686616771960
> ],
> "$columns": [
> {
> "data": [
> "Folsom",
> "Helsinki",
> "Jakarta",
> "Madrid",
> "Prague",
> "San Diego",
> "San Francisco",
> "Shanghai",
> "Tokyo",
> "Washington, DC",
> "Wellington",
> "Delhi",
> "Dhaka",
> "Lagos",
> "Karachi",
> "Istanbul",
> "Cairo",
> "Mexico City",
> "London",
> "New York City",
> "Tehran",
> "Bogota",
> "Rio de Janeiro",
> "Riyadh",
> "Singapore",
> "Saint Petersburg",
> "Sydney",
> "Abidjan",
> "Dar es Salaam",
> "Wellington",
> "Los Angeles",
> "Berlin",
> "Jeddah",
> "Kabul",
> "Mashhad",
> "Milan",
> "Kiev",
> "Rome",
> "Chicago",
> "Osaka",
> "Bandung",
> "Managua",
> "Paris",
> "Shiraz",
> "Manila",
> "Montreal",
> "Guadalajara",
> "Dallas",
> "Yerevan",
> "Tunis"
> ],
> "name": "city",
> "type": "String"
> },
> {
> "data": [
> "United States",
> "Finland",
> "Indonesia",
> "Spain",
> "Czech Republic",
> "United States",
> "United States",
> "China",
> "Japan",
> "United States",
> "New Zealand",
> "India",
> "Bangladesh",
> "Nigeria",
> "Pakistan",
> "Turkey",
> "Egypt",
> "Mexico",
> "United Kingdom",
> "United States",
> "Iran",
> "Colombia",
> "Brazil",
> "Saudi Arabia",
> "Singapore",
> "Russia",
> "Australia",
> "Ivory Coast",
> "Tanzania",
> "New Zealand",
> "United States",
> "Germany",
> "Saudi Arabia",
> "Afghanistan",
> "Iran",
> "Italy",
> "Ukraine",
> "Italy",
> "United States",
> "Japan",
> "Indonesia",
> "Nicaragua",
> "France",
> "Iran",
> "Philippines",
> "Canada",
> "Mexico",
> "United States",
> "Armenia",
> "Tunisia"
> ],
> "name": "country",
> "type": "String"
> },
> {
> "data": [
> 77271,
> 635591,
> 10187595,
> 3233527,
> 1241664,
> 1406630,
> 884363,
> 24153000,
> 13617000,
> 658893,
> 405000,
> 11034555,
> 14399000,
> 16060303,
> 14910352,
> 14025000,
> 10230350,
> 8974724,
> 8825001,
> 8622698,
> 8154051,
> 7878783,
> 6429923,
> 5676621,
> 5535000,
> 5191690,
> 208374,
> 4765000,
> 4364541,
> 405000,
> 3884307,
> 3517424,
> 3456259,
> 3414100,
> 3001184,
> 1359905,
> 2908703,
> 2877215,
> 2695598,
> 2691742,
> 2575478,
> 2560789,
> 2229621,
> 1869001,
> 1780148,
> 1649519,
> 1495189,
> 1317929,
> 1060138,
> 1056247
> ],
> "name": "population",
> "type": "int"
> }
> ]
> },
> "rawData": [
> {
> "city": {
> "align": "center",
> "editable": true,
> "justify": "left",
> "style": {
> "backgroundColor": "#F7901D",
> "classes": "some-class"
> },
> "value": "Folsom"
> },
> "country": "United States",
> "population": 77271
> },
> {
> "city": "Helsinki",
> "country": "Finland",
> "population": 635591
> },
> {
> "city": "Jakarta",
> "country": "Indonesia",
> "population": 10187595
> },
> {
> "city": "Madrid",
> "country": "Spain",
> "population": 3233527
> },
> {
> "city": "Prague",
> "country": "Czech Republic",
> "population": 1241664
> },
> {
> "city": "San Diego",
> "country": "United States",
> "population": 1406630
> },
> {
> "city": "San Francisco",
> "country": "United States",
> "population": 884363
> },
> {
> "city": "Shanghai",
> "country": "China",
> "population": 24153000
> },
> {
> "city": "Tokyo",
> "country": "Japan",
> "population": 13617000
> },
> {
> "city": "Washington, DC",
> "country": "United States",
> "population": 658893
> },
> {
> "city": "Wellington",
> "country": "New Zealand",
> "population": 405000
> },
> {
> "city": "Delhi",
> "country": "India",
> "population": 11034555
> },
> {
> "city": "Dhaka",
> "country": "Bangladesh",
> "population": 14399000
> },
> {
> "city": "Lagos",
> "country": "Nigeria",
> "population": 16060303
> },
> {
> "city": "Karachi",
> "country": "Pakistan",
> "population": 14910352
> },
> {
> "city": "Istanbul",
> "country": "Turkey",
> "population": 14025000
> },
> {
> "city": "Cairo",
> "country": "Egypt",
> "population": 10230350
> },
> {
> "city": "Mexico City",
> "country": "Mexico",
> "population": 8974724
> },
> {
> "city": "London",
> "country": "United Kingdom",
> "population": 8825001
> },
> {
> "city": "New York City",
> "country": "United States",
> "population": 8622698
> },
> {
> "city": "Tehran",
> "country": "Iran",
> "population": 8154051
> },
> {
> "city": "Bogota",
> "country": "Colombia",
> "population": 7878783
> },
> {
> "city": "Rio de Janeiro",
> "country": "Brazil",
> "population": 6429923
> },
> {
> "city": "Riyadh",
> "country": "Saudi Arabia",
> "population": 5676621
> },
> {
> "city": "Singapore",
> "country": "Singapore",
> "population": 5535000
> },
> {
> "city": "Saint Petersburg",
> "country": "Russia",
> "population": 5191690
> },
> {
> "city": "Sydney",
> "country": "Australia",
> "population": 208374
> },
> {
> "city": "Abidjan",
> "country": "Ivory Coast",
> "population": 4765000
> },
> {
> "city": "Dar es Salaam",
> "country": "Tanzania",
> "population": 4364541
> },
> {
> "city": "Wellington",
> "country": "New Zealand",
> "population": 405000
> },
> {
> "city": "Los Angeles",
> "country": "United States",
> "population": 3884307
> },
> {
> "city": "Berlin",
> "country": "Germany",
> "population": 3517424
> },
> {
> "city": "Jeddah",
> "country": "Saudi Arabia",
> "population": 3456259
> },
> {
> "city": "Kabul",
> "country": "Afghanistan",
> "population": 3414100
> },
> {
> "city": "Mashhad",
> "country": "Iran",
> "population": 3001184
> },
> {
> "city": "Milan",
> "country": "Italy",
> "population": 1359905
> },
> {
> "city": "Kiev",
> "country": "Ukraine",
> "population": 2908703
> },
> {
> "city": "Rome",
> "country": "Italy",
> "population": 2877215
> },
> {
> "city": "Chicago",
> "country": "United States",
> "population": 2695598
> },
> {
> "city": "Osaka",
> "country": "Japan",
> "population": 2691742
> },
> {
> "city": "Bandung",
> "country": "Indonesia",
> "population": 2575478
> },
> {
> "city": "Managua",
> "country": "Nicaragua",
> "population": 2560789
> },
> {
> "city": "Paris",
> "country": "France",
> "population": 2229621
> },
> {
> "city": "Shiraz",
> "country": "Iran",
> "population": 1869001
> },
> {
> "city": "Manila",
> "country": "Philippines",
> "population": 1780148
> },
> {
> "city": "Montreal",
> "country": "Canada",
> "population": 1649519
> },
> {
> "city": "Guadalajara",
> "country": "Mexico",
> "population": 1495189
> },
> {
> "city": "Dallas",
> "country": "United States",
> "population": 1317929
> },
> {
> "city": "Yerevan",
> "country": "Armenia",
> "population": 1060138
> },
> {
> "city": "Tunis",
> "country": "Tunisia",
> "population": 1056247
> }
> ]
> },
> "meta": {
> "name": "Table1"
> },
> "position": {
> "basis": "400px",
> "grow": 1
> },
> "propConfig": {
> "custom.constList": {
> "binding": {
> "config": {
> "expression": "asList(\u0027Hello\u0027, \"Cruel\", \"World\", 56, \"Today\")"
> },
> "type": "expr"
> }
> },
> "custom.constMap": {
> "binding": {
> "config": {
> "expression": "asMap(\u0027key1\u0027, \u0027Value1\u0027, \"key2\", \"Another\", \u0027key3\u0027, \u0027Cruel\u0027, \u0027key4\u0027, \u0027World\u0027)"
> },
> "type": "expr"
> }
> },
> "custom.filtered": {
> "access": "PRIVATE",
> "binding": {
> "config": {
> "expression": "forEach({this.props.data}, if(it()[\u0027population\u0027] \u003c 1000000, unMap(it()[\u0027city\u0027], \u0027value\u0027), null))"
> },
> "previewEnabled": false,
> "type": "expr"
> },
> "persistent": true
> },
> "custom.filteredDS": {
> "access": "PRIVATE",
> "persistent": true
> },
> "custom.rawData": {
> "access": "PRIVATE"
> },
> "props.data": {
> "binding": {
> "config": {
> "expression": "forEach(\n\t{this.custom.filteredDS},\n\tasMap(it())\n)"
> },
> "type": "expr"
> }
> }
> },
> "type": "ia.display.table"
> }
> ],
> "meta": {
> "name": "FlexContainer"
> },
> "position": {
> "basis": "34px",
> "grow": 1
> },
> "props": {
> "direction": "column"
> },
> "type": "ia.container.flex"
> }
> ],
> "meta": {
> "name": "root"
> },
> "props": {
> "direction": "column"
> },
> "type": "ia.container.flex"
> }
> }
> 
> ```

There are many other examples in this topic. Some have been broken by module updates, as I fine-tuned how things should work. (`unionAll()`, `selectStar()`, and `forEach()` have had breaking changes along the way.)

---

<div class="post-metadata">

**Author:** ![calimero100582](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/calimero100582/32/18630_2.png) [@calimero100582](https://forum.inductiveautomation.com/u/calimero100582)\
**Post date:** [December 18, 2023, 1:59pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/85 "2023-12-18T13:59:28Z")

</div>

This work for me

Maybe I am pushing my luck, but to try this module, I wanted to have fun, and replicate PLC behavior with an expression in our dev environment

I have raw material length, an order defined as a UDT, and I want to calculate the expected scrap length (done in the PLC in production).  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/5/5519b3e6a617fc203e6a6590cc32f4f093d634fb.png)

I usually can read the UDT, and get a JSON document. Loop through properties Part1 to Part60, and get the sum of Quantity x Length.  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/3/c3b55ddff491eef99cb91e8ee38dc1992dedcd2f.png)

Would you expect this 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:** [December 18, 2023, 2:11pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/86 "2023-12-18T14:11:53Z")

</div>

No, JSON documents aren't supported. But you could use my `tags()` function to get the values as lists. Something like this:

```auto
sum(
	forEach(
		tags(
			forEach(
				60,
				stringFormat("[.]Order/Part%d/Length", idx()+1)
			)
		),
		it()[1]
	)
)

```

To calculate Length \* Quantity, it gets substantially more complicated, needing `flatten()` to generate the tag path list with a nested loop, and `groupBy()` to then loop by Part#.

---

<div class="post-metadata">

**Author:** ![calimero100582](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/calimero100582/32/18630_2.png) [@calimero100582](https://forum.inductiveautomation.com/u/calimero100582)\
**Post date:** [December 18, 2023, 2:40pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/87 "2023-12-18T14:40:40Z")

</div>

Thanks, ended up with the following

```auto
sum(foreach(60, {[.]Order}['Part' + idx()]['Length']))

```

---

<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:** [December 18, 2023, 2:43pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/88 "2023-12-18T14:43:23Z")

</div>

Hmm. I guess JSON documents **are** supported (by Ignition's square brackets) after all. That's pretty handy.

---

<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:** [February 12, 2024, 7:36pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/89 "2024-02-12T19:36:35Z")

</div>

Automation Professionals is pleased to announce a new release of the Integration Toolkit module. This release adds one new scripting function, [system.db.runPrepInsert()](https://www.automation-pros.com/toolkit/doc/utility.html#runprepinsert).

It is very similar to IA's [system.db.runPrepUpdate()](https://docs.inductiveautomation.com/display/DOC81/system.db.runPrepUpdate), intepreting the `query`, `args`, `database`, and `tx` arguments in the same fashion. The `getKey` argument is omitted as moot, as this function **always** retrieves generated keys. The `skipAudit` optional argument is unimplemented.

For Ignition v8.1+: [v2.0.15.240431913](https://www.automation-pros.com/ignition/Integration%20Toolkit-2.0.15.240431913-v81.modl)

Do note the documenation's notes on the stellar performance of PostgreSQL's JDBC driver, and the equally **lame** performance of MS SQL Server's JDBC driver. (Yes, latest v12.6.)

{ Ahem. Tips on implementing `skipAudit` would be welcome... }

---

<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 12, 2024, 7:55pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/90 "2024-02-12T19:55:28Z")

</div>

> [@pturmel](#):
>
> { Ahem. Tips on implementing `skipAudit` would be welcome... }

In the RPC message, it's just adding a boolean `true` for the `skipAudit` arg on the outgoing `Message`, which is parsed in the RPC handling (`com.inductiveautomation.ignition.gateway.servlets.gateway.functions.AbstractUpdateQuery`). On the gateway, `skipAudit` is a no-op (the call is simply never audited), as far as I can tell.

---

<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:** [February 12, 2024, 7:56pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/91 "2024-02-12T19:56:43Z")

</div>

> [@paul-griffith](#):
>
> `skipAudit` is a no-op

Hah! That explains my failure to figure out how it worked. Spelunking with reflection can only go so far.

---

<div class="post-metadata">

**Author:** ![Ryan\_Allen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_allen/32/47013_2.png) [@Ryan\_Allen](https://forum.inductiveautomation.com/u/Ryan_Allen)\
**Post date:** [March 1, 2024, 12:41am UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/92 "2024-03-01T00:41:44Z")

</div>

Just fyi the last sentence in your description of your Ethernet/IP module still references Simulation Aids 👍

Specifically "(Note: This demo requires the Simulation Aids module, too.)"

---

<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:** [March 1, 2024, 2:07am UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/93 "2024-03-01T02:07:39Z")

</div>

> [@Ryan\_Allen](#):
>
> still references

Hah! Will fix.

---

<div class="post-metadata">

**Author:** ![Felipe\_CRM](https://avatars.discourse-cdn.com/v4/letter/f/dfb087/32.png) [@Felipe\_CRM](https://forum.inductiveautomation.com/u/Felipe_CRM)\
**Post date:** [March 12, 2024, 7:49pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/94 "2024-03-12T19:49:54Z")

</div>

When trying to implement [Tag Max Value no SQL - #2 by pturmel](https://forum.inductiveautomation.com/t/tag-max-value-no-sql/35649/2) I found that using key access with brackets i.e. `state['max']` results in an `Error_ExpressionEval`. Fortunately, using `state.get('max')`. still works correctly.

EDIT: I'm guessing it's because it throws a `KeyError`, d'oh! I was thinking that maybe I could "pre-load" the key but I also bet that it resets the "state" dictionary whenever the expression is edited.

---

<div class="post-metadata">

**Author:** ![MSI\_EXP\_Auto](https://avatars.discourse-cdn.com/v4/letter/m/fbc32d/32.png) [@MSI\_EXP\_Auto](https://forum.inductiveautomation.com/u/MSI_EXP_Auto)\
**Post date:** [April 1, 2024, 2:17pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/95 "2024-04-01T14:17:20Z")

</div>

Does the view() function work with expression tags? I'm finding it works on a component binding but not on expression tag, even the debugMe function does not return anything to the logs, is this expected?

My expression is

`debugME('exp_debug',view('select * where SITE_NAME == "Site"', tag('[default]Main Production Query')))`

and this exact expression works as a transform on a binding.

---

<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:** [April 1, 2024, 2:28pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/96 "2024-04-01T14:28:12Z")

</div>

Set the execution of the tag to event driven.

---

<div class="post-metadata">

**Author:** ![MSI\_EXP\_Auto](https://avatars.discourse-cdn.com/v4/letter/m/fbc32d/32.png) [@MSI\_EXP\_Auto](https://forum.inductiveautomation.com/u/MSI_EXP_Auto)\
**Post date:** [April 1, 2024, 2:43pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/97 "2024-04-01T14:43:13Z")

</div>

The Tag Value still just shows "Error\_Configuration" with no other information and nothing related is appearing in logs -  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/c/dc659dd5a383643733519c6a6ffe910b34f668d7.png)

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/6/e682fc72c99fb37eef676a2805cfae8806773de4.png)

---

<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:** [April 1, 2024, 2:45pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/98 "2024-04-01T14:45:28Z")

</div>

I will investigate. What version of Ignition is this?

(PS: you really should be using the `where()` function for this.)

```auto
debugMe(
	'exp_debug',
	where(
		{[default]Main Production Query},
		it()['SITE_NAME'] = 'Site'
	)
)

```

---

<div class="post-metadata">

**Author:** ![MSI\_EXP\_Auto](https://avatars.discourse-cdn.com/v4/letter/m/fbc32d/32.png) [@MSI\_EXP\_Auto](https://forum.inductiveautomation.com/u/MSI_EXP_Auto)\
**Post date:** [April 1, 2024, 2:49pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/99 "2024-04-01T14:49:24Z")

</div>

This is version 8.1.24. I will try out that other function, thanks.

---

<div class="post-metadata">

**Author:** ![MSI\_EXP\_Auto](https://avatars.discourse-cdn.com/v4/letter/m/fbc32d/32.png) [@MSI\_EXP\_Auto](https://forum.inductiveautomation.com/u/MSI_EXP_Auto)\
**Post date:** [April 1, 2024, 3:01pm UTC](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934/100 "2024-04-01T15:01:48Z")

</div>

Similar results, works as a transform on a binding but no luck on a tag.

[Previous page](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934.md?page=4)

[Next page](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934.md?page=6)
