# Data

The **Data** category is where Ondeva’s power as a backend platform comes to life. These steps allow you to load, transform, persist, and delete structured data from tables or forms. Whether your data originates from a form, API, or external file — you can capture, manipulate, and store it precisely.

### **Load Query**

**Purpose:**

Executes a saved query and loads its result into the session for later use in the workflow or UI.

**Key Options:**

* **Source**: Choose from any prebuilt query in your project.

**When to Use:**

* Preloading data before branching logic.
* Feeding a “For Each” loop.
* Populating UI components with live query results.

***

### **Save Entry**

**Purpose:**

Creates or updates an entry in a database table.

**Key Options:**

* **Table**: Select which table to write into.
* **Query**: Define filters to find an existing entry (optional). If left blank, a new entry will be created. If filled only matching entries will be updated. The system will not “upsert” records.
* **Fields**: Set which fields to update or insert, and their values (supports function editor and session variables).

**When to Use:**

* Updating rows based on form inputs or calculations.
* Storing processed data from APIs or loops.

***

### **Delete Entry**

**Purpose:**

Deletes a specific row from a table based on its ID.

**Key Options:**

* **Table**
* **Entry ID**: Static or calculated via formula.

**When to Use:**

* Cleanup after user deletion or canceled transactions.
* Removing outdated records via time-based workflows.

***

### **Duplicate Entry**

**Purpose:**

Creates a copy of a specific entry (row) from a table.

**Key Options:**

* **Entry ID**: The original entry to copy.

**When to Use:**

* Cloning templates (e.g., tasks, documents).
* Generating reusable rows from predefined models.

***

### **Read File**

**Purpose:**

Loads data from an external file (Excel, CSV, JSON) into the session for manipulation or saving.

**Key Options:**

* **Path**: File location: You can load a file from three different sources:
  * an external URL
  * a file that was uploaded by the user and the current workflow is executed after upload completion. In that case use the variable `{var_file-path}`
  * or read a JSON file directly, in which case you can reference a variable holding your JSON data in the field.
* **File Type**: Select the file type to load
* **Parsing Options**: Header, sheet number (Excel), date/number format (CSV), JSON path (for nested parsing).

**When to Use:**

* Importing datasets via workflows.
* Syncing data from external exports.
* Processing uploaded files on form submission.

***

### **User Data**

**Purpose:**

Manipulates user-related information such as resetting passwords, managing roles, or triggering invitations.

**Key Actions:**

* Create user
* Send invitation/reset links
* Update roles (add/remove)
* Generate API token
* Logout user

**When to Use:**

* Onboarding flows.
* Automating user role changes.
* Integrating with external identity providers.

***

### **Read Form Fields**

**Purpose:**

Extracts values from a form submitted by a user.

**Key Options:**

* **Form**: The form you're targeting. The form must be present on the page and the workflow must be executed on form submit.
* **Variables**: Map each form field to a named variable for later use.

**When to Use:**

* Triggering workflows from form submissions.
* Capturing input for condition checks, database saves, or emails.
* Replacing backend form handlers with Ondeva-native logic.

***

### **Set Form Validation**

**Purpose:**

Sets whether a form submission passes or fails validation based on custom workflow logic.

**Key Options:**

* Can be dynamically used after `Check Condition` or external checks (e.g. API, duplicate check).

**When to Use:**

* Implementing custom validations (e.g., email uniqueness, license limits).
* Returning dynamic error messages to the user interface.

***

### Best Practices

* Combine **Read Form Fields** → **Save Entry** for complete form handling pipelines.
* Use **Load Query** + **For Each** for bulk data updates.
* Remember: session parameters persist across steps and allow data reuse within the same workflow.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ondeva.com/workflow/steps-reference/data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
