Import/Export CSV
The CSV import/export functionality extends this capability by allowing you to manage FEEL expressions in familiar spreadsheet environments while maintaining full compatibility with Nected's powerful
Nected gives you an option to import or export Decision Tables in FEEL-compatible CSV format. This feature allows you to manage Decision Table logic using spreadsheet tools like Excel or Google Sheets.
What is FEEL?
Friendly Enough Expression Language (FEEL) is a standardized expression language designed to bridge the gap between business logic and technical implementation. FEEL enables business analysts, domain experts, and developers to collaborate effectively by providing a syntax that is both human-readable and machine-executable. Originally defined as part of the Decision Model and Notation (DMN) specification by the Object Management Group (OMG), FEEL has become the standard for expressing business rules and decision logic.
In Nected, FEEL serves as the foundation for creating sophisticated decision logic within Decision Tables, Rules, and Workflows. By supporting FEEL-compatible expressions, Nected ensures that your business rules remain portable, standardized, and accessible to both technical and non-technical team members. Whether you're defining simple conditions or complex multi-criteria decisions, FEEL's intuitive syntax makes it easy to express your business logic clearly and precisely.
DMN (Decision Model and Notation) support is also on our roadmap. Soon, you'll be able to import and manage complete DMN models directly within Nected, making it easier to align with industry-standard decision modeling practices.
Before importing or exporting the CSV file, here are the prerequisites that you need to understand and configure accordingly:
What should the FEEL-compatible CSV File Format be?
Whenever you're preparing a CSV file for rule testing or bulk evaluations, the structure must strictly follow a FEEL-compatible format. Each column should represent a valid FEEL expression bound to a data type (e.g., numeric, string, date, datetime). Each row represents a different test case or input set.
status
numeric({{.customInput.Num1}})
numeric({{.customInput.Num1}})
date({{.customInput.Date1}})
dateTime({{.customInput.DateTime1}})
string(result)
dateTime(keyName)
TRUE
1
2
date("2025-11-10")
datetime("2025-06-27T16:27:00+05:30")
"Atul1"
datetime("2025-06-27T17:28:43+05:30")
TRUE
fx(var a=10;a)
< fx(var a=10;a)
fx(var a = "2025-11-10";a)
> datetime("2025-06-27T17:06:02+05:30")
"Atul1"
datetime("2025-06-27T17:28:43+05:30")
TRUE
< 10
not([12...231])
!= fx(var a = "2025-11-10";a)
< datetime("2025-06-27T17:06:09+05:30")
"Atul1"
datetime("2025-06-27T17:28:43+05:30")
TRUE
>= 1
>= 1
[fx(var a = "2025-11-10";a)...date("{{.globalVar.fs}}")]
!= datetime("2025-06-27T17:06:24+05:30")
"Atul1"
datetime("2025-06-27T17:28:43+05:30")
Download the sample CSV file to get an idea how to write the CSV file:
2. FEEL Compatible Operators for CSV
When creating FEEL expressions in your CSV files, use these operators that are compatible with Nected's platform. This table shows the FEEL syntax, corresponding Nected operators, their purpose, and usage examples.
Existence
exists()
EXISTS
Confirms that the current field is present and not null
exists()
not(exists())
NOT EXISTS
Confirms that the current field is missing or undefined
not(exists())
null
NULL
Checks for an explicit null
value
null
not(null)
NOT NULL
Checks that the value is anything except null
not(null)
Comparison
==
EQUAL
Tests equality
== 10
/ ==ABC
or, simply writing the value 10
/ == {{.customInput.Name}}
/ == fx(var a=10;a)
!=
NOT EQUAL
Tests inequality
!= "Blocked"
/ != {{.globalVar.status}}
/ != fx(var s="X";s)
>
GREATER THAN
Greater‑than comparison
> 21
/ > {{.customInput.age}}
<
LESS THAN
Less‑than comparison
< 1000
/ < {{.globalVar.maxAmount}}
>=
GREATER THAN EQUALS
Greater‑than‑or‑equal comparison
>= 75
/ >= {{.globalVar.minScore}}
<=
LESS THAN EQUALS
Less‑than‑or‑equal comparison
<= 5000
/ <= {{.customInput.limit}}
Range
[x...y]
BETWEEN
Inclusive range check
in [1...3]
/ in [1...{{.globalVar.base_price}}]
not([x...y])
NOT BETWEEN
Outside inclusive range
not(in [0...50])
/ not(in [0...{{.globalVar.minPass}}])
(x..y)
BETWEEN EXCLUSIVE
Exclusive range check
in (100..1000)
/ in ({{.globalVar.minAmount}}..{{.globalVar.maxAmount}})
String
contains()
CONTAINS
Checks for substring
contains("John")
/ contains("{{.globalVar.searchTerm}}")
not(contains())
NOT CONTAINS
Confirms substring absence
not(contains("spam"))
/ not(contains("{{.globalVar.blocked}}"))
startsWith()
START WITH
Checks prefix
startsWith("ABC")
/ startsWith("{{.globalVar.prefix}}")
not(startsWith())
NOT START WITH
Confirms prefix absence
not(startsWith("TEMP"))
/ not(startsWith("{{.globalVar.tempPrefix}}"))
endsWith()
END WITH
Checks suffix
endsWith(".com")
/ endsWith("{{.globalVar.allowedDomain}}")
not(endsWith())
NOT END WITH
Confirms suffix absence
not(endsWith(".tmp"))
/ not(endsWith("{{.globalVar.tempExt}}"))
List
in
IN
Membership test
in ["Active","Pending"]
/ in {{.globalVar.statusList}}
not(in)
NOT IN
Non‑membership test
not(in ["Blocked","Banned"])
/ not(in {{.customInput.List1}})
empty()
EMPTY
Checks for empty list
empty()
not(empty())
NOT EMPTY
Checks for non‑empty list
not(empty())
containsIn()
CONTAINS IN
Validates that every item exists in a reference list
containsIn ["Admin","User"]
/ containsIn {{.customInput.roles}}
not(containsIn())
NOT CONTAINS IN
Detects missing items with respect to reference list
not(containsIn ["Special"])
matchAll()
MATCH ALL
Confirms that all specified items are present
matchAll ["GPS","WiFi"]
/ matchAll {{.customInput.features}}
not(matchAll())
NOT MATCH ALL
Confirms that at least one item is missing
not(matchAll ["ID","Proof"])
Boolean
true
TRUE
Boolean literal true
true
false
FALSE
Boolean literal false
false
even()
EVEN
Checks if current number is even
even()
not(even())
ODD
Checks if current number is odd
not(even())
Date/Time
date()
DATE
Creates a date value
date("2025-01-15")
/ date("{{.customInput.dateString}}")
datetime()
DATETIME
Creates a datetime value
datetime("2025-01-15T10:30:00")
/ datetime("{{.customInput.dateTimeString}}")
Advanced
fx()
ExcelFormula
Evaluates an Excel‑style formula
fx(var a=10;a*2)
/ fx(var a={{.customInput.value}};a*{{.globalVar.mult}})
js()
JsFormula
Evaluates a JavaScript expression
js: Math.round(10.4)
/ js: Math.round({{.customInput.value}}*{{.globalVar.rate}})
Refer to the Pre-Configured Operators documentation for the complete list of available operators and their syntax. This ensures that your CSV expressions will work correctly when imported into Nected Decision Tables. Example expressions:
age >= 18
(numeric comparison)status = "Active"
(string equality)category in ["Premium", "Gold"]
(list membership)applicationDate between "2024-01-01" and "2024-12-31"
(date range)age >= 18
(numeric comparison)status = "Active"
(string equality)category in ["Premium", "Gold"]
(list membership)applicationDate between "2024-01-01" and "2024-12-31"
(date range)
Available Token Types:
customInput:
{{.customInput.fieldName}}
- User-defined inputsglobalVar:
{{.globalVar.variableName}}
- Global variablesdataSet:
{{.dataSet.fieldName}}
- Dataset referencesoutputData:
{{.outputData.fieldName}}
- Previous rule outputssystemVar:
{{.systemVar.NULL}}
,{{.systemVar.ExecutionId}}
,{{.systemVar.Environment}}
Importing Decision Tables from FEEL-compatible CSV
You can import Decision Table data from CSV files that follow the FEEL-compatible format. This allows you to manage your decision logic using external spreadsheet tools and bulk import rules into Nected.
Follow these steps to import a FEEL-compatible CSV to the decision table:
Access Import Function
Open the Decision Table editor where you want to import the CSV from the dashboard or create a new one.
Click the Import button in the bottom of the decision table. It will open a popup like below:
image.png
Upload and Preview
Click Upload file and select your prepared CSV file
After it successfully got imported, click on “Continue with Import” button.
image.png
If everything with your csv file is correct, then the rows will be simply imported and appended into the decision table; else you’ll see the errors in your csv file from this popup:

Exporting Decision Tables to FEEL-compatible CSV
Export your existing Decision Tables to CSV format for external editing, backup, or sharing with stakeholders who prefer working with spreadsheet applications.
Steps to Export the decision table as FEEL compatible format is very simple:
Open the Decision Table to ensure it contains the data you want to export.
Click the Export button in the Decision Table
Not Supported Features
When using CSV import/export for Decision Tables, certain advanced features are not supported. If your Decision Table contains any of these elements, CSV export will not be possible:
1. Group Conditions If you've created grouped conditions in your Decision Table using the "Group" functionality, CSV export will not work. Group conditions that combine multiple criteria with complex logical relationships cannot be represented in the flat CSV structure.
2. Relative Dates Decision Tables that use relative date conditions (such as "last 30 days", "next week", or "3 months ago") are not supported in CSV export. These dynamic date references cannot be accurately converted to the static CSV format.
Conclusion
The CSV import/export functionality for Decision Tables provides a powerful way to manage your business rules using familiar spreadsheet tools while maintaining full compatibility with Nected's FEEL expression language. This feature enables seamless collaboration between technical and business teams, allows for bulk rule management, and simplifies the process of maintaining complex decision logic.
By leveraging FEEL-compatible operators and Nected's comprehensive token system, you can create sophisticated decision rules in CSV format that seamlessly integrate with your existing workflows. Whether you're migrating existing rules, collaborating with stakeholders, or managing large-scale decision tables, the CSV format offers the flexibility and ease-of-use needed for effective decision management.
Remember to follow the format specifications and operator guidelines outlined in this documentation to ensure successful import and export operations. For any advanced features not supported in CSV format, continue using the native Nected Decision Table interface to maintain full functionality.
Last updated