💡This article contains version changes.
Spot the light bulb icon? That means you’ll find helpful details about what’s changed across versions. Read more about version changes here.
This topic describes the Procedure Actions included in the Data Reader action group and their specific properties.
The Data Reader action group allows you to feed data to Board Cubes and also update information in the Board Data Model (Entities and Relationships) through existing Data Reader protocols.
The Data Reader action group offers the following steps:
SQL Data Reader
This step allows you to execute an existing Data Reader that feeds data from a relational database as well as any ODBC or OLE-DB compliant data source.
To configure this step, select an existing SQL Data Reader from the "Protocol" dropdown list and click the "Save Changes" button. See Creating a Data Reader protocol for more details.

Text File Data Reader
This step allows you to execute an existing Data Reader that feeds data from a text file that can be read from your local storage, from a cloud service, or through an HTTP request.
To configure this step, select an existing Text file Data Reader from the "Protocol" dropdown list. Then, from the "Path/File" drop-down list, choose either a specific file to be read or "All" to read from all files. The drop-down menu displays all compatible files located in the default directory.
In the case of a file located outside the default directory, click on the pencil button and insert the full path of the desired file. For example, z:\source\customfile.csv.
Finally, click the "ADD" button to save the Procedure step. See Creating a Data Reader protocol for more details.

This step supports the following Substitution Formulas in the “Path/File” field: @User, @UserName, @Database, @ProcedureId, and all the @Date variants except @Datetime. In addition, environment variables such as %bss% can also be used in the “Path/File” field.
SAP Data Reader
This step allows you to execute an existing Data Reader that feeds data from SAP/ERP and SAP/BIW through the use of the Board SAP Connector.
To configure this step, select an existing SAP Data Reader from the "Protocol" dropdown list.
If needed, you can insert a parameter in the "Parameter" field by using the following syntax: &ParameterName=ItemName (the "&" symbol is needed to append parameters in the Query string).
The parameter must have already been configured in the SAP Connector Query Design Panel so that it identifies a specific table field in SAP. The syntax used for this identification is: sap_table_field_name=@parameter_name
For example, if a SAP Table Field named "LAND1" has been defined as a parameter named "@Country" by using the syntax described above (LAND1=@Country), then you can insert &Country=UK in the "Parameter" field as shown below:
SAP Connector Query Design Panel
"Parameter" field
Using the parameter allows you to run the same SAP Data Reader in different Procedure steps and filter it by specifying the SAP table fields you want to read.
See Creating a Data Reader protocol for more details.
For each type of Data Reader action, you can also enable or disable the following options:
Log file. Enables the creation of a log file of rejected records. If no record is discarded, then no log file is created at all. However, the general Data Model log file always contains a log entry related to each Data Reader execution.
See the Running and managing Data Reader protocols section for more details.Use current selection. The step will read data only related to members included in the active selection. For example, if the chosen protocol is configured with the "Replace" option, the Data Reader will consider only those members that are in the active selection.
You should use this option only when the Data Reader feeds one or more Cubes.💡“Error management“ Group. In the case a Data Reader terminates due to encountered errors, the Error Management option allows users to define the subsequent execution path. This ensures that appropriate contingency procedures are triggered whenever the data read process cannot be completed successfully. Configure it as follows:
In versions 14.3 and earlier, this functionality is not available.
For existing Data Reader Procedure steps: after upgrading, this configuration will not be mandatory. However, once the step is saved with this group configured, it becomes mandatory and cannot be removed.
💡 On error go to group (mandatory). This functionality accounts for errors that occur before any records are processed by Board, such as missing source files, inaccessible SQL tables, or other source-related failures. In these cases, the Data Reader step is skipped, and the Procedure immediately redirects to the specified error group.
In the case an error of this type occurs, the DiagnosticsLog will display:
- GenericError
- EmptyFile
- NoRecordsFound
- ConnectionUnavailable
- FileNotFound
Choose “NONE (continue Procedure execution)” for the procedure to continue with the next step after an error occurs, maintaining the same behavior as all Board versions up to 14.4 (included).In versions 14.3 and earlier, this functionality is not available.
💡Include Execution Error (optional). By enabling this option, the Data Reader protocol detects and handles errors during record processing.
When active, it halts execution upon encountering invalid records, rather than silently skipping them. Execution is stopped at the first failure, and control is redirected to the configured error group. This flag replaces the deprecated "Stop on Error" option and correctly triggers error handling for scenarios such as "Max item number exceeded" and other record-level exceptions.
When active, a Data Reader will terminate if:
- A temporal Entity is mapped but the value is unreadable (e.g., wrong date format)
- A non-temporal Entity is set to “Add new item” and the Max item limit is reached
- If there are memory issues or other internal errors, any of the following will also cause termination:
- A non-temporal Entity is set to “Add new item”
- An Entity description is set to "Replace" mode
- There is at least one Unbalanced Entity mapped
- There is a more aggregate/less aggregate Entity mapped
On the other hand, if an invalid record is encountered in any scenario other than those mentioned above, the Data Reader will not terminate execution and simply skip the record.In versions 14.2.2 and earlier, this option is called "Stop on error". This option stops the Data Reader as soon as a "rejected" record is identified. Procedure execution is not stopped in this case, so each Procedure step is still executed.
If the Data Reader terminates during data processing and the import is only partially completed, the affected Cubes and Entities will be partially populated. In such cases, the configured Error Group redirection is applied.
If partial population of Cubes is acceptable, Cube clearing should be avoided. Alternatively, Cubes and Entities may be cleared; however, this action will result in the loss of all associated data. The appropriate approach depends on the specific requirements and tolerance for data loss in the given scenario.
💡“Get back” flag. This flag will be available when a specific Error Group is selected. When enabled, it allows the Procedure to return to the Procedure flow after performing the actions defined within the Error Group.
In versions 14.4.4 and earlier, this option is not available.
Error Management Flow Scenarios
In this section, you’ll find the expected system behaviors that occur when the Error Management functionality is implemented.
Error Management Flow Scenarios
To get started, select a Data Reader type from the dropdown below.
Data Reader Type
Text and Cloud Storage
Single File
Go to Group defined
Include Execution Errors disabled
File is not found
Expected Behavior
Previous Behavior
No cubes are cleared, goes to Error Management group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
File is empty
Expected Behavior
Previous Behavior
No cubes are cleared, goes to Error Management group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Include Execution Errors enabled
File is not found
Expected Behavior
Previous Behavior
No cubes are cleared, goes to Error Management group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
File is empty
Expected Behavior
Previous Behavior
No cubes are cleared, goes to Error Management group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), stops the execution when the first invalid record is found and goes to Error group
All Cubes are cleared. Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), invalid record is found, the data reader terminates and the execution moves on to the next step
Go to Group: NONE (continue Procedure execution)
Include Execution Errors disabled
No file is found
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
File is empty
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are real
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Include Execution Errors enabled
File is not found
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
File is empty
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), exits data reader execution when the invalid record is found and moves forward with next step
All Cubes are cleared. Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), invalid record is found, the data reader terminates and the execution moves on to the next step
Multiple files (‘All’ option)
Go to Group defined
Include Execution Errors disabled
No file is found
Expected Behavior
Previous Behavior
No cubes are cleared, Goes to Error Management group
Cubes are not cleared. Data reader terminates and procedure execution moves on to the next step
One or more files are empty
Expected Behavior
Previous Behavior
Data Reader is executed for all valid files and skips the empty file(s). The execution continues without going to the Error group
Data Reader is executed for all the non-empty files and procedure execution moves on to the next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), all invalid records are skipped and the execution continues to the next file. The invalid record found does not cause the flow to go to the Error group
Data Reader is executed for all files with valid records but can clear cubes when it finds the file with invalid records. It is executed for all files and all records but the invalid ones are skipped. The cube is cleared before the reading cycle for all data readers with valid or invalid records, therefore the cubes or slices of them can be cleared
Include Execution Errors enabled
No file is found
Expected Behavior
Previous Behavior
No cubes are cleared, goes to Error group
Cubes are not cleared . Data reader terminates and procedure execution moves on to next step
One or more files are empty
Expected Behavior
Previous Behavior
Data Reader is executed for all valid files and skips the empty file(s). The execution continues without going to the defined Error group
Data Reader is executed for all the non-empty files and procedure execution moves on to the next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), goes to Error group without loading the remaining files
Data Reader is executed for all files with valid records but can clear cubes when it finds the file with invalid records. It is executed for all files and all records but the invalid ones are skipped. The cube is cleared before the reading cycle for all data readers with valid or invalid records, therefore the cubes or slices of them can be cleared
Go to Group: NONE (continue Procedure execution)
Include Execution Errors disabled
No file is found
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next procedure step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
One or more files are empty
Expected Behavior
Previous Behavior
Data Reader is executed for all valid files and skips the empty file(s). The execution continues without going to the Error group
Data Reader is executed for all the non-empty files and procedure execution moves on to the next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), all invalid records are skipped and the execution continues to the next file. The invalid record found does not cause the flow to go to the Error group
Data Reader is executed for all files with valid records but can clear cubes when it finds the file with invalid records. It is executed for all files and all records but the invalid ones are skipped. The cube is cleared before the reading cycle for all data readers with valid or invalid records, therefore the cubes or slices of them can be cleared
Include Execution Errors enabled
No file is found
Expected Behavior
Previous Behavior
No Cubes are cleared, moves forward with next step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
One or more files are empty
Expected Behavior
Previous Behavior
Data Reader is executed for all valid files and skips the empty file(s). The execution continues without going to the defined Error group
Data Reader is executed for all the non-empty files and procedure execution moves on to the next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), exits data reader execution for this file and moves on to loading next files
Data Reader is executed for all files with valid records but can clear cubes when it finds the file with invalid records. It is executed for all files and all records but the invalid ones are skipped. The cube is cleared before the reading cycle for all data readers with valid or invalid records, therefore the cubes or slices of them can be cleared
SQL and SAP
Go to Group defined
Include Execution Errors disabled
SQL Table/View or SAP extraction are not found
Expected Behavior
Previous Behavior
Cubes are not cleared, goes to error group
Cubes are not cleared. Data Reader step terminates and procedure execution moves on to next step
SQL query or SAP extraction do not return any record
Expected Behavior
Previous Behavior
Cubes are not cleared, goes to error group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Include Execution Errors enabled
SQL Table/View or SAP extraction are not found
Expected Behavior
Previous Behavior
Cubes are not cleared, goes to error group
Cubes are not cleared. Data Reader step terminates and procedure execution moves on to next step
SQL query or SAP extraction do not return any record
Expected Behavior
Previous Behavior
Cubes are not cleared, goes to error group
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), goes to Error group
All Cubes are cleared. Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), invalid record is found, the data reader terminates and the execution moves on to the next step
Go to Group: NONE (continue Procedure execution)
Include Execution Errors disabled
SQL Table/View or SAP extraction are not found
Expected Behavior
Previous Behavior
Cubes are not cleared, moves forward with next procedure step
Cubes are not cleared. Data Reader step terminates and procedure execution moves on to next step
SQL query or SAP extraction do not return any record
Expected Behavior
Previous Behavior
Cubes are not cleared, moves forward with next procedure step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), the record is skipped and reads the next record. Then the execution moves on to the next step after all records are read
Include Execution Errors enabled
SQL Table/View or SAP extraction are not found
Expected Behavior
Previous Behavior
Cubes are not cleared, moves forward with next procedure step
Cubes are not cleared. Data Reader step terminates and procedure execution moves on to next step
SQL query or SAP extraction do not return any record
Expected Behavior
Previous Behavior
Cubes are not cleared, moves forward with next procedure step
Cubes are not cleared. Data reader terminates and procedure execution moves on to next step.
Invalid record encountered
Expected Behavior
Previous Behavior
Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), exits data reader execution when the invalid record is found and moves forward with next step
All Cubes are cleared. Only data related to the time slice being read is cleared (or the whole cube if there is no temporal in the cube), invalid record is found, the data reader terminates and the execution moves on to the next step
When a Procedure starts, the range or scope of execution on the Entities is inherited from the Select and the Pager selections of the Screen from which the Procedure is launched. These inherited selections will be combined with the Procedure selections. In order to replace any prior selection, add a new "Remove all selections" step or tick the option "Reset all previous selections" when adding a new "Select" step in your Procedure. If the Procedure is run directly from the Data Model, the Screen selections are not carried over. The Procedure will start with a full selection instead of the Screen selections made on the Screen where it is usually triggered from.
In the case of a Capsule Procedure, the Data Model dropdown menu allows you to select the Data Model on which the Procedure step will be executed, except in cases where the Procedure step has specific options that act on other Data Models (for example, the "Save Pending Changes to Disk" step in the "Advanced Action Group" can be configured to act on all Data Models or only on the Data Model where the Procedure resides).

