6. Importing and Exporting Files

6.1. Importing and Exporting CSV (ZIP) Files

Requirements, including attached files and referenced enumerations, can be imported into or exported from any requirements list within a specific project — such as a system version, feature version, or vehicle functional architecture version — using comma-separated values (CSV) files or ZIP archives (the latter is necessary to include attachments and enumerations).

Round-trip importing and exporting capabilities are also provided. For instance, one can export requirements to a file, modify the attribute values within that file, and subsequently import the file back into SODA.Create.

To commence the process of importing or exporting requirements, locate the context menu (...) button adjacent to any requirements list header and select the desired function (export button is disabled if the list contains no requirements). For instance:

requirements import export in context menu

In the instance above, two distinct lists of requirements are present (vehicle requirements and system requirements) within the requirements page of the project (system version). It is important to note that requirements intended for inclusion in both lists may be consolidated into a single CSV file, and the import function executed only once from the context menu of either list. This functionality is also applicable to the requirements page of feature version projects.

6.1.1. CSV Format

SODA.Create implements the CSV format as specified in the RFC 4180 document. For general information about the CSV file format, please refer to the “Comma-separated values” resource available on the RFC Editor website.

It is noteworthy that when a CSV file is prepared manually, it is typically more convenient to create or edit it using tools such as Google Sheets or Microsoft Excel and subsequently export it to CSV, rather than working directly with the CSV file in a text editor.

6.1.2. CSV and ZIP Content Rules

If the imported requirements do not include attachments or references to enumerations, the input file for the import may simply be a standalone CSV file, the name of which is arbitrary.

Conversely, if attachments or enumerations are present, the input file for the import must be a ZIP archive (the name of which is arbitrary) and the archive must contain the following files and folders, named precisely as indicated:

  1. The mandatory requirements.csv file, which contains the list of requirements designated for import.

  2. The optional enumerations.csv file, which contains the list of enumerations that may or may not be referenced by the requirements from requirements.csv.

  3. The optional files folder, which contains all attachments associated with the requirements from requirements.csv, excluding images intended for display as images in the user interface.

  4. The optional images folder, which contains all images (PNG or JPEG) attached to the requirements from requirements.csv that are designated to be displayed as images in the user interface.

This example of a requirements import ZIP package can function as a foundational basis for the development of custom requirements import packages.

To successfully import a CSV file, its content must adhere to the following rules:

  1. Rows: every row within the file, including the header row, must contain an identical number of cells.

  2. Header Row: the initial row is required to contain column headers. These headers must be formulated precisely according to the specifications detailed in subsequent sections. Each cell in the header row represents an attribute of the artifacts (requirements or enumerations) to be imported.

    Should a header be incorrect, the column will be ignored by the CSV import function.

  3. Content Rows: a CSV file may contain multiple rows following the header row. Each subsequent row represents a distinct artifact designated for import. Within each row, each cell corresponds to the value of the respective attribute for the corresponding artifact.

    The omission of a column is treated identically to an empty cell value. This is permissible for optional artifact attributes but will result in an error for required attributes.

6.1.2.1. Common CSV Content Rules

The following specification applies equally to the content of both the requirements.csv and enumerations.csv files:

Column Header

Presence

Content Rows Value

id

Optional
The values of the id attribute must be unique across all content rows in both requirements.csv and enumerations.csv combined.
Within requirements.csv: used during import exclusively to define the mentions (references) of software ports or software parameters (from requirements.csv) as they appear within the description attribute value of a system or feature requirement.
Within enumerations.csv: used during import exclusively to define the data type reference within a system_calibration_software_parameter from requirements.csv.
Ignored otherwise since it is a system-maintained attribute.

String
This value must not contain whitespace characters.
It is strongly recommended to utilize a version 4 UUID, which can be generated using tools such as an Online UUID Generator.

key

Optional
The values of the key attribute must be unique across all content rows in both requirements.csv and enumerations.csv combined.
Used during import exclusively to establish the behavior of the round-trip feature, specifically dictating the strategy for updating existing artifacts.
Ignored otherwise since it is a system-maintained attribute.

Unsigned Integer
This value may be specified with or without one to four leading zeros.
Valid examples span from 00001 (equivalent to 1) up to 99999.

revision

Optional
Used during import exclusively to establish the behavior of the round-trip feature, specifically dictating the strategy for updating existing artifacts.
Ignored otherwise since it is a system-maintained attribute.

String
This value must adhere to the pattern consisting of one to three digits (the first digit can not be 0) followed by one or two uppercase Latin letters.
This can be expressed by the regular expression [1-9]{1,3}[A-Z]{2}.
The valid examples span from 1A up to 999ZZ.

created_at

Ignored
A system-maintained attribute which is not supported in the CSV import function.

Date Time
dd/mm/yyyy hh:mm:ss

created_by

Ignored
A system-maintained attribute which is not supported in the CSV import function.

JSON Array (1 row; 3 columns)
["Author First Name", "Author Last Name", "Author Email"]

6.1.2.2. Content Rules for “requirements.csv”

The following specification applies exclusively to the content of requirements.csv file:

Column Header

Applicable to Types

Required for Types

Content Rows Value

type

All

All

Enumeration
This value is restricted to the set:
system_functional_requirement
system_non_functional_requirement
system_configuration_requirement
system_diagnostic_requirement
system_receiver_software_port
system_sender_software_port
system_calibration_software_parameter
feature_functional_requirement
feature_non_functional_requirement
feature_ergonomic_requirement
feature_receiver_software_port
feature_sender_software_port
vehicle_customer_requirement
vehicle_hardware_constraint
vehicle_regulatory_requirement
vehicle_functional_safety_goal
vehicle_cybersecurity_goal

name

All

system_receiver_software_port
system_sender_software_port
system_calibration_software_parameter
feature_receiver_software_port
feature_sender_software_port

String

description

All

system_functional_requirement
system_non_functional_requirement
system_configuration_requirement
system_diagnostic_requirement
feature_functional_requirement
feature_non_functional_requirement
feature_ergonomic_requirement
vehicle_customer_requirement
vehicle_hardware_constraint
vehicle_regulatory_requirement
vehicle_functional_safety_goal
vehicle_cybersecurity_goal

String
Should the artifact type belong to the set
system_functional_requirement
system_non_functional_requirement
system_configuration_requirement
system_diagnostic_requirement
feature_functional_requirement
feature_non_functional_requirement
feature_ergonomic_requirement
the description is permitted to include mentions (references) of
system_receiver_software_port
system_sender_software_port
system_calibration_software_parameter
feature_receiver_software_port
feature_sender_software_port
artifacts from the same requirements.csv.
System requirements must exclusively reference system software ports and parameters.
Feature requirements must exclusively reference feature software ports.
The types of mentions currently supported are
@calibration_software_parameter("Software Parameter Name", software_parameter_id)
@receiver_software_port("Receiver Software Port Name", receiver_software_port_id)
@sender_software_port("Sender Software Port Name", sender_software_port_id).
For example, the description of a system_functional_requirement may be specified as follows:

IF @receiver_software_port(“system_receiver_software_port 1 Name”, 46b1773b-9350-4741-b423-bdb0ae8e8a79), AND
@receiver_software_port(“system_receiver_software_port 2 Name”, 94ccce6f-7dae-40e6-8ff4-cd1c819604ce), AND
@calibration_software_parameter(“system_calibration_software_parameter 1 Name”, 669af672-5928-4acc-97fd-2f3ea78a7b33), AND
@calibration_software_parameter(“system_calibration_software_parameter 2 Name”, 87b982b2-187d-4d8c-b901-d2099f4399bb),
THEN @sender_software_port(“system_sender_software_port 1 Name”, cf952132-5456-4d77-a42e-0507c5b55e9f) AND
@sender_software_port(“system_sender_software_port 2 Name”, ccaec0f9-3d29-4ea8-8fb2-e295cdfcc359).

plain_description

All

None

This attribute is Ignored since it is a system-maintained attribute which is not supported in the CSV import function.

String
This value represents a simplified version of the description attribute’s value, wherein all mentions are substituted with their respective names.
For example, @receiver_software_port("Receiver Software Port Name", receiver_software_port_id) would be replaced by Receiver Software Port Name.

design_object_key

system_functional_requirement
system_non_functional_requirement
system_configuration_requirement
system_diagnostic_requirement
system_receiver_software_port
system_sender_software_port
system_calibration_software_parameter
feature_functional_requirement
feature_non_functional_requirement
feature_ergonomic_requirement
feature_receiver_software_port
feature_sender_software_port

None

This attribute is Ignored since it is a system-maintained attribute which is not supported in the CSV import function.

Unsigned Integer
This value may be specified with or without one to four leading zeros.
Valid examples span from 00001 (equivalent to 1) up to 99999.

web_links

All

None

JSON Array (N rows; 2 columns)
[["Link 1 Display Name", "Link 1 Full URL"], ["Link 2 Display Name", "Link 2 Full URL"]]

files

All

None

JSON Array (1 row; M columns)
["File 1 Name with Extension", "File 2 Name with Extension"]
The files with the specified names must be positioned within the input ZIP archive in accordance with the rules outlined at the commencement of the CSV and ZIP Content Rules section.

images

All

None

JSON Array (1 row; M columns)
["Image 1 Name with Extension", "Image 2 Name with Extension"]
The images with the specified names must be positioned within the input ZIP archive in accordance with the rules outlined at the commencement of the CSV and ZIP Content Rules section.

requirement_group

All

None

String

asil

system_functional_requirement
feature_functional_requirement
vehicle_functional_safety_goal

vehicle_functional_safety_goal

Enumeration
This value is restricted to the set:
QM A B C D
QM ASIL A ASIL B ASIL C ASIL D

mitigation

vehicle_functional_safety_goal
vehicle_cybersecurity_goal

None

String

regulatory_document_name

vehicle_regulatory_requirement

vehicle_regulatory_requirement

String

regulatory_document_revision

vehicle_regulatory_requirement

None

String

regulatory_document_paragraph

vehicle_regulatory_requirement

None

String

regulatory_document_effective_date

vehicle_regulatory_requirement

None

Date
dd/mm/yyyy

hazard

vehicle_functional_safety_goal

None

String

severity

vehicle_functional_safety_goal

None

Enumeration
This value is restricted to the set:
0 1 2 3
S0 S1 S2 S3

exposure

vehicle_functional_safety_goal

None

Enumeration
This value is restricted to the set:
0 1 2 3
E0 E1 E2 E3

controllability

vehicle_functional_safety_goal

None

Enumeration
This value is restricted to the set:
0 1 2 3
C0 C1 C2 C3

cal

vehicle_cybersecurity_goal

vehicle_cybersecurity_goal

Enumeration
This value is restricted to the set:
1 2 3 4
CAL 1 CAL 2 CAL 3 CAL 4

associated_risks

vehicle_cybersecurity_goal

None

String

impact_assessment

vehicle_cybersecurity_goal

None

String

data_type

system_calibration_software_parameter

system_calibration_software_parameter

Enumeration
This value is restricted to the set:
boolean
int8 int16 int32 int64
uint8 uint16 uint32 uint64
single double
string
enum

data_type_id

system_calibration_software_parameter

None

This attribute is Required for the system_calibration_software_parameter artifact type when the artifact’s data_type is enum.
It is used during import exclusively to establish the reference to an enumeration from enumerations.csv.
Consequently, enumerations.csv
1. must be included within the import input ZIP file and
2. must contain precisely one content row where the id matches the data_type_id of the system_calibration_software_parameter.

String
This value must not contain whitespace characters.
It is strongly recommended to utilize a version 4 UUID, which can be generated using tools such as an Online UUID Generator.

default_value

system_calibration_software_parameter

system_calibration_software_parameter

JSON Array (N rows; M columns; N, M > 0)
[["Value (1, 1)", "Value (1, 2)", "Value (1, 3)"], ["Value (2, 1)", "Value (2, 2)", "Value (2, 3)"]]
The data type of all values must correspond to the one specified by the data_type attribute of the system_calibration_software_parameter.

min

system_calibration_software_parameter
— this attribute is applicable only when corresponding data_type attribute value is from the set:
int8 int16 int32 int64
uint8 uint16 uint32 uint64
single double

None

The data type of this value must correspond to the one specified by the data_type attribute of the system_calibration_software_parameter.

max

system_calibration_software_parameter
— this attribute is applicable only when corresponding data_type attribute value is from the set:
int8 int16 int32 int64
uint8 uint16 uint32 uint64
single double

None

The data type of this value must correspond to the one specified by the data_type attribute of the system_calibration_software_parameter.

unit

system_calibration_software_parameter
— this attribute is applicable only when corresponding data_type attribute value is from the set:
int8 int16 int32 int64
uint8 uint16 uint32 uint64
single double

None

String

associated_domain

feature_functional_requirement
feature_non_functional_requirement
feature_ergonomic_requirement

None

String

6.1.2.3. Content Rules for “enumerations.csv”

The following specification applies exclusively to the content of enumerations.csv file:

Column Header

Presence

Content Rows Value

name

Required
The values of the name attribute must be unique across all content rows in enumerations.csv.

String
This value must exclusively contain the following characters: “A-Z”, “a-z”, “0-9”, and “_”.
Furthermore, the initial character is restricted to the set: “A-Z”, “a-z”, or “_”.

enum_constants

Required

JSON Array (N rows; 3 columns; N > 0)
[["Value 1 (Required, Unsigned Integer)", "Name 1 (Required, String)", "Description 1 (Optional, String)"], ["Value 2", "Name 2", ""]]
Name of each enumeration constant must exclusively contain the following characters: “A-Z”, “a-z”, “0-9”, and “_”.
Furthermore, the initial character of the Name is restricted to the set: “A-Z”, “a-z”, or “_”.

description

Optional

String