# Where should I save some permanent information?

**URL:** <https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [October 6, 2025, 3:06pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208 "2025-10-06T15:06:42Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 6, 2025, 3:06pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/1 "2025-10-06T15:06:42Z")

</div>

I'm working in a small app.  
One of the things that it does is creating an excel. It makes a sheet called Instructions with data that is not going to be modified.

Where should I save that information?  
I don't feel like writting it in a script file is correct. At the end is going to be something like a dataset.

```python
[
    ["Step", 1, "Do something", "info1"],
    ["Step", 2, "Do other thing", "info2"]
    ...
]

```

Then I simply do a foor loop writting each value in each cell. Where should I save that information? I have about 70 rows and 7 columns.

Thx in advance!

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [October 6, 2025, 3:10pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/2 "2025-10-06T15:10:10Z")

</div>

I would use a database, do you have a db connection available?

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 6, 2025, 3:12pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/3 "2025-10-06T15:12:31Z")

</div>

I would prefer not to use one. We want to be a simple "import project" with little to no configuration. Setting a db would add complexity that I would prefer not to have.

My first thought was a .txt file that is inside the project.

---

<div class="post-metadata">

**Author:** ![Everett\_Cass](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/everett_cass/32/86983_2.png) [@Everett\_Cass](https://forum.inductiveautomation.com/u/Everett_Cass)\
**Post date:** [October 6, 2025, 3:17pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/4 "2025-10-06T15:17:54Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/7/e7e59233585189eb98ebe2bbcd034926c6031fa6.png)  
If you want to avoid using a database, You could store it in a memory tag as Document, or Dataset for the data type

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [October 6, 2025, 3:19pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/5 "2025-10-06T15:19:33Z")

</div>

You could also use a dictionary held in the top-level of a project script. You can search on the forum about using `system.util.getGlobals()` for such a thing.

> [@\[IGN-6503\]Project Library Script Initialization Races](https://forum.inductiveautomation.com/t/ign-6503-project-library-script-initialization-races/98636/2):
>
> I should mention that the work-around shown above should NOT be placed in all of your project library scripts. It solves the multiple execution problem but at the risk of AB-BA deadlock across interdependent scripts. Some thoughts: Definitions of simple functions and simple assignments to top-level constants do not need this fix. While multiple executions will repeatedly replace top level objects, the replacements are identical to the first pass--no harm, no foul. Definitions of top-lev…

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 6, 2025, 3:25pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/6 "2025-10-06T15:25:03Z")

</div>

I would have to create it first. And I would need that information to create it.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [October 6, 2025, 3:27pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/7 "2025-10-06T15:27:36Z")

</div>

You would create an _empty_ dictionary at first and populate it later.

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [October 6, 2025, 3:36pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/8 "2025-10-06T15:36:12Z")

</div>

You can always use a sql lite db connection through ignition will will just write to a file for you. No installs required.

If you intend to get information out of this .txt file in a structure way (like a list of lists like in your example) you will need be creating a lot more work for yourself to correctly right and read from that than it would be to setup a sql lite database. I would consider this a foot gun. Use a memory dataset or document tag, top level variable, or a sql lite database - all these already solved writing/reading structured data.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [October 6, 2025, 3:45pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/9 "2025-10-06T15:45:07Z")

</div>

It’s a small dataset. I’d use a dataset memory tag, and [lookup()](https://www.docs.inductiveautomation.com/docs/8.1/appendix/expression-functions/logic/lookup) whatever I needed.

> **[lookup | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/appendix/expression-functions/logic/lookup)**
>
> This looks for lookupValue in the lookupColumn of dataset.

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 6, 2025, 3:47pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/10 "2025-10-06T15:47:51Z")

</div>

How would I initialize the tag when importing the project?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [October 6, 2025, 3:50pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/11 "2025-10-06T15:50:47Z")

</div>

Is this in Vision, or Perspective?

- Vision: use a client tag
- Perspective: put it in a session property.

EDIT: Sorry, someone was speaking to me about actual work stuff 🙄 The nerve…

Either way, you can do a lookup(), wherever the dataset is stored.

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 7, 2025, 7:09am UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/12 "2025-10-07T07:09:02Z")

</div>

Neither of those.

It's a scripting project that it's called from the scripting console.

(is for managing tags and having a control over it, not mean to stay)

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [October 7, 2025, 11:56am UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/13 "2025-10-07T11:56:04Z")

</div>

Why don’t you describe the problem you are trying to solve

---

<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 7, 2025, 1:42pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/14 "2025-10-07T13:42:42Z")

</div>

> [@danielps1818](#):
>
> Neither of those

Uh, no.

> [@danielps1818](#):
>
> called from the scripting console

That is Vision scope.

Permanent information in the gateway will not be directly available in Vision scope. You will need to use database queries or `system.util.sendRequest()`.

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 7, 2025, 2:25pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/15 "2025-10-07T14:25:44Z")

</div>

I'm building an Excel with some sheets using apache poi libraries.

The first page is some instructions that are fixed.  
Second page is the data of the selected provider (formatted or with different things).

The second page is really easy, because I get the data from the provider.  
First page is more difficult because I don't have the data stored.

We have a need that the project won't need configuration. So you simply import, and it's ready to use.

My question is, where should I (or can I) save the information of the first page?

My current thought process:

1. A .txt file inside project → Can't because doesn't get exported with the project
2. A bd table → Can't because It would need bd configuration from the user
3. A file tag → Doesn't get saved when exporting the project
4. A scripting file with a dataset → Current solution that I'm thinking is the one i would use

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [October 7, 2025, 2:32pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/16 "2025-10-07T14:32:04Z")

</div>

> [@danielps1818](#):
>
> ```python
> [
> ["Step", 1, "Do something", "info1"],
> ["Step", 2, "Do other thing", "info2"]
> ...
> ]
> 
> ```

I am guessing it’s control flow logic on excel sheet page 1 given your example? In which case it should be in your code directly anyways imo. If its not you need to be more specific.

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 7, 2025, 2:35pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/17 "2025-10-07T14:35:19Z")

</div>

Nope, it's instructions on how to use the second sheet. I'll paste an example:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/c/ac2a4990b09791ceaae18dd96ca89f488ba9df8d.png)

Explain on how to configure the second sheet so you can use propertly the tool we are designing.

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [October 7, 2025, 2:37pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/18 "2025-10-07T14:37:08Z")

</div>

And where are the users going to see this, in vision or perspective? And if they are not, why does it need to be in the project at all, seems more like documentation?

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [October 7, 2025, 2:49pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/19 "2025-10-07T14:49:01Z")

</div>

It's going to be in an excel that the our tool is going to create from scratch. You execute a function in the designer console and automatically it's going to create a xlsx file with all the data I just described before.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [October 7, 2025, 3:12pm UTC](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208/20 "2025-10-07T15:12:13Z")

</div>

So there shouldn't be any config, but then the user is expected to open the designer to actually run things ?

There's something not quite right here...

[Next page](https://forum.inductiveautomation.com/t/where-should-i-save-some-permanent-information/111208.md?page=2)
