# Project design and configuration

**URL:** <https://forum.inductiveautomation.com/t/project-design-and-configuration/57148>\
**Category:** Ignition\
**Created:** [March 13, 2022, 8:20pm UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148 "2022-03-13T20:20:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luke\_Abraams](https://avatars.discourse-cdn.com/v4/letter/l/94ad74/32.png) [@Luke\_Abraams](https://forum.inductiveautomation.com/u/Luke_Abraams)\
**Post date:** [March 13, 2022, 8:20pm UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148/1 "2022-03-13T20:20:35Z")

</div>

Hey everyone, just learning to use Ignition. I have some questions on the path I need to take for proper configuration/setup of a project I am working on. A lot of the project will be scripts, most will be event based scripts based on OPC points. Most of them I will be using OPC points to set variables within the scripts. (Think container quantities to post via API) I am working to modify the scripts from Python to the Jython format used in Ignition. So questions I have–

1. To accomplish what I am looking at doing should I be using Gateway tag change scripts to achieve this or is there a better way?
2. Just to confirm do I need to have any kind of user UI involved or can I run it strictly with scripts and OPC? I don’t need a user UI at this point as I want to feed data back to OPC points based on the returned results from the scripts.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2022, 9:59pm UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148/2 "2022-03-13T21:59:29Z")

</div>

You have a some choices.

- If you check the Tag Editor you will see that you can add Tag Event Scripts on the OPC tags directly.
- You can create a Derived Tag to use give an expression language derivative of the original tag without disturbing the original tag.  
Someone with more expertise will probably have other options for you.

It might be a good idea to post a sample of what you’re trying to do. (Use the `</>` code formatting button if you’re pasting code.)

---

<div class="post-metadata">

**Author:** ![josborn](https://avatars.discourse-cdn.com/v4/letter/j/4bbf92/32.png) [@josborn](https://forum.inductiveautomation.com/u/josborn)\
**Post date:** [March 14, 2022, 12:50am UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148/3 "2022-03-14T00:50:11Z")

</div>

I would go with gateway tag change scripts. If i see something from @pturmel with IMNSHO, that's good enough for me (:

> [@Scripting architecture choices](https://forum.inductiveautomation.com/t/scripting-architecture-choices/56976):
>
> I am looking at cleaning up my first Ignition project that was released to the wild (Under v8.1). While it works I didn’t make the best design choices which has resulted in a complicated (IE ugly) maintenance process. The application itself is basically a data logging system that monitors multiple machines (each defined by an instance of a single UDT) and writes values to a DB on both value changed and timed events. It also has no display screens of any sort. The current architecture has 3 v…

---

<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 14, 2022, 11:57am UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148/4 "2022-03-14T11:57:16Z")

</div>

Are you planning to _expose_ an API for other services to call (presumably via WebDev)? If so, just have your API endpoint in Ignition read the tags needed. No tag change script required.  
If your are planning to _call_ an API, one-for-one with the updated tag values, then a gateway tag change event would be my choice.  
If you are planning to _call_ an API to send _bulk_ data (multiple tags), I would use a timer event combined with a gateway tag change event. The latter to note in a cache _what_ to send, the former to make the API call.

Share more of your use case for better advice.

---

<div class="post-metadata">

**Author:** ![Luke\_Abraams](https://avatars.discourse-cdn.com/v4/letter/l/94ad74/32.png) [@Luke\_Abraams](https://forum.inductiveautomation.com/u/Luke_Abraams)\
**Post date:** [March 19, 2022, 5:14pm UTC](https://forum.inductiveautomation.com/t/project-design-and-configuration/57148/5 "2022-03-19T17:14:19Z")

</div>

Thank you to everyone who responded. Currently my plan is to call API’s from a couple of vendors. These will both gets and posts. Some brief examples are from a manufacturing facility

1. Machine PLC count reaches container standard pack - Post request to API for vendor1 for container label also Post request to API for vendor2 new container/full container pick up.
2. I will also do Get requests to Vendor1 to check/get job information to update other tags on change. Things like job number, part number, job quantity, standard pack for the part will be retrieved and on job number change I would update the tags for the other items.

So as you can see I have some big ideas and plans and just want to make sure the way I am approaching it is the most efficient and smartest. The get requests from example two would be timer based probably checking every couple of minutes to make sure the job information has not changed. I have the scripts working for the the post requests to Vendor2 thanks to this forum helping me find what I was doing incorrectly from Python to the Jython format used here. Now I am starting down the path of updating script data from tags before sending and updating other tags from the returned data. I am sure once I have figured out the first part the second will be easy.
