Skip to content

Import Requirements

Squash allows you to import a tree of requirements from an .xls file.

To import requirements, you must complete an Excel file by following the procedure on completing a requirements import file. Then, you can import this Excel file by using the [Import] option in the Requirement workspace. It is possible to simulate the import to verify the coherence of the import file before importing it.

Learn more

For more details on this procedure, please visit the page Importing/Exporting an object.

Completing a Requirements Import File

Importing requirements via an Excel file allows you to mass create or modify a portfolio of requirements. You can import requirements, their attributes as well as associated items (requirements and test cases).

This feature is very useful, especially in these cases:

  • when you have to migrate requirements from a third-party tool;
  • when you have to retrieve a portfolio of specifications from an existing document;
  • when you have to mass modify requirements already in Squash.

In Squash, you can import a tree of requirements from an .xls, .xlsx, or .xlsm file.

Support of .xlsx files

.xlsx extension is used for different Excel file types. Only Excel Workbook is supported, Strict Open XML Spreadsheet is not supported.

Import template

You can download an import template from the import pop-up in the Requirement workspace.

Import File structure

The import file is composed of three tabs: REQUIREMENT, LINK_REQ_TC, and LINK_REQ_REQ. If you have a Squash Premium license, there is a fourth tab: LINK_HIGH_LEVEL_STANDARD_REQ.

  • The REQUIREMENT tab allows you to enter the information related to the requirements to import such as location, description, criticality, etc.;
  • The LINK_REQ_TC tab allows you to enter the information to link requirements to case tests already in Squash;
  • The LINK_REQ_REQ tab allows you to enter the information to link requirement versions to each other (either already in Squash, or in an import file);
  • The LINK_HIGH_LEVEL_STANDARD_REQ tab allows you to enter the information to link high-level requirements to standard requirements (either already in the Squash or in the import file).

Structure of the file

The import file must follow these rules:

  • The name of the tabs must not be changed.
  • The headings of columns must not be changed.
  • The blank rows are ignored.
  • The cells must not be merged.
  • The order of the rows does not matter.
  • If you use any "Classify and protect" method for your data, check that the file is public so Squash can read it.
  • The import is done row by row.

Data in HTML

Some columns must contain text in HTML format.
If this format is not respected (for example, if special HTML characters are not encoded), the import will be incorrect or rejected.
Moreover, to avoid security vulnerabilities, only certain HTML elements and attributes are allowed. Their list can be found here.

REQUIREMENT Tab

Column nameDescriptionExpected value
ACTIONValue that indicates the action that you want to do.Required Field
C: to create (Create)
U: to update (Update)
REQ_PATHRequirement path. It starts with /project name and ends with the requirement name (= current version name, in other words the last version). The name of the project is included because the import is cross-project.Required Field
For example:
- /project/folder/requirement
- /project/PARENTrequirement/CHILDrequirement
REQ_VERSION_NUMVersion number of the requirement.
CREATE Mode: If the field is not filled in, two outcome:
- There is only one requirement version with this REQ_PATH, so REQ_VERSION_NUM=1.
- There are several versions of requirements with the same REQ_PATH, so the versions are numbered by their apparition number starting from 1.
UPDATE Mode: this field allows you to identify which version to update.
CREATE Mode: Optional field.
UPDATE Mode: Required field
REQ_VERSION_REFERENCERequirement version reference
REQ_VERSION_NAMERequirement version name.
- CREATE Mode: This field is optional because it is at the end of the path in the REQ_PATH column.
- UPDATE Mode: allows you to rename a requirement
REQ_VERSION_CRITICALITYRequirement criticality code- CRITICAL
- MAJOR
- MINOR
- UNDEFINED [Default value]
REQ_VERSION_CATEGORYRequirement version category code.
The list can be the default list or a custom list. During the import, if the value is incomplete or unrecognized, the default value will be assigned.
- CAT_FUNCTIONAL
- CAT_NON_FUNCTIONAL
- CAT_USE_CASE
- CAT_BUSINESS
- CAT_TEST_REQUIREMENT
- CAT_UNDEFINED [Default value]
- CAT_ERGONOMIC
- CAT_PERFORMANCE
- CAT_TECHNICAL
- CAT_USER_STORY
- CAT_SECURITY
REQ_VERSION_STATUSRequirement status code- APPROVED
- OBSOLETE
- UNDER_REVIEW
- WORK_IN_PROGRESS [Default value]
REQ_VERSION_DESCRIPTIONDescription of the requirementHTML text, see below for the constraints on this one.
REQ_VERSION_CREATED_ONRequirement creation date.
The date must be entered in date cells or in text cells in ISO 8601 format.
Format: YYYY-MM-DD
If not entered, import date is used.
REQ_VERSION__CREATED_BYCreator login.If not entered, login of the user who did the import is used.
REQ_VERSION_MILESTONEName of the milestone(s) related to that requirement.
If an objet is related to several milestones, each of the milestones must be entered in the matching column, separated with a '|'.
UPDATE Mode: if the columns is empty, current related milestones are deleted.
For example if a requirement is related to two milestones:
Milestone 1 | Milestone 2
REQ_VERSION_CUF_<cuf code>One column per custom field.
In heading, replace <cuf code> with the custom field code.
Value linked to custom field, see below.

If you want to link requirements and test cases in the repository, the three fields are mandatory.

Column nameDescriptionExpected value
REQ_PATHRequirement path from project name to requirement name (Current version) NB: current version name can differ from version to link nameFor example:
- /project/folder/requirement
- /project/PARENTrequirement/CHILDrequirement
REQ_VERSION_NUMRequirement version number to link
TC_PATHTest case path from project name to test case nameFor example: /project/folder/testcase

If you want to link requirements, the five fields are mandatory.

Column nameDescriptionExpected value
REQ_PATHRequirement path from project name to requirement name (current version) NB: current version name can differ from version to link nameFor example:
- /project/folder/requirement
- /project/PARENTrequirement/CHILDrequirement
REQ_VERSION_NUMRequirement version number
RELATED_REQ_PATHRelated requirement path from project name to requirement name (current version)
NB: current version name can differ from version to link name
For example: /project/folder/name_requirement_current_version
RELATED_REQ_VERSION_NUMRelated requirement version number
RELATED_REQ_ROLERole code field value for link between the requirementsFor example:
to link Requirement A (PARENT) to Requirement B (CHILD) with a parent-child role, enter Requirement B role: CHILD

If you want to link high-level requirements to standard requirements, the two fields are mandatory.

Column nameDescriptionExpected value
HIGH_LEVEL_REQ_PATHHigh-level requirement path from project name to requirement name (current version)For example: /project/folder/highLevelRequirement
STANDARD_REQ_PATHStandard requirement path from project name to requirement name (current version)For example: /project/folder/standardRequirement

Importing Requirements

Importing allows you to create requirements with all the features available in the Requirement workspace.

Attention

Synchronized requirements cannot be modified by an import with UPDATE action, as they are updated by synchronization.

Creating a Tree of Requirements

The tree is very important because it allows you to organize the requirements repository. Importing allows you to create a precise tree of items to import. You can do this in several projects at once: Requirements, Folders, Parent and child requirements, etc.

Importing a tree of requirements

If the folders are not in Squash during the import, they are created by the import.

For example:

For the path /Project1/Folder1/ParentRequirement/ChildRequirement:

  • If the parent requirement is already in the repository, the child requirement is added under the parent requirement;
  • If the parent requirement is not in the repository but in the import file BEFORE the child requirement, the child requirement is added under the parent requirement;
  • If the parent requirement does not exist in the repository nor after the child requirement, the child requirement is added to the parent requirement file, which is a sub-folder of Folder 1.

Importing Requirement Versions

To create several versions of the same requirement, in the Excel file, you must assign one line to one version. You must enter the number of the version you want to create in the REQ_VERSION_NUM column.

Focus

To create a version 3 of a requirement, there must imperatively be a version 2.

Importing requirement versions

To modify a requirement version's attributes, the REQ_VERSION_NUM column must be filled with the number of the version to modify and the REQ_PATH column the path of the requirement's current version.

Update requirements via import

Importing requirements with a custom list

If a custom list is set up for the project's requirements category, in the import file, fill in the option code wanted in the REQ_VERSION_CATEGORY column.

For example:

  1. To have a custom list with several options, including Option2 linked to the Opt2EN code.

Custom list page

  1. In the Excel file, fill in the option code value in the REQ_VERSION_CATEGORY column: here Opt2EN.
  2. The requirement is created when the file is imported. The Category field is filled by Option2

Importing requirements with custom fields

If custom fields (CUF) are set up for the project's requirements, in the import file, the REQ_VERSION_CUF_<cuf code> column can be filled. There must be one column for each custom field. The column's heading must contain the custom field's code, which is available on its consultation page.

REQ_VERSION_CUF_<cuf code\> Column Content:

Custom field TypeExpected value
TagTag1|Tag2
Checkboxestrue ou false
Drop-down listOption label
Numerical digitFor example: 50, 12,8
DateYYYY-MM-DD
Simple TextUnformatted text with 255 characters maximum
Rich TextHTML text, see below for the constraints on this one

You must fill in the LINK_REQ_TC tab of the import file with the requirement path, the version number, as well as the path of the test case to be linked. For the linking to work, the test case must already be in the repository.

The information is visible after the import in the requirement's Test case verifying this requirement anchor.

You must fill in the import file's LINK_REQ_REQ tab with the path of the two requirements to be linked as well as their version number and the link type code. For the linking to work, the requirement to be linked must already be in the repository or in the import file.

The information is visible after the import in the requirement's Linked requirements anchor.

You must fill in the LINK_HIGH_LEVEL_STANDARD_REQ tab of the import file with the high-level requirement path and the standard requirement path. For the linking to work, the requirements to be linked must already be in the repository or in the import file.

The information is visible after the import in the high-level requirement's Standard requirements linked to this high-level requirement anchor and in the standard requirement's High level requirement field.

Constraints on imported rich texts

Imported rich texts (HTML text) should only contain basic elements and attributes.

Allowed elements are: a, b, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, div, dl, dt, em, figure, h1, h2, h3, h4, h5, h6, hr, i, img, ins, li, ol, p, pre, q, s, small, span, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, and ul.

Allowed attributes for all elements are: align, aria-hidden, border, cellpadding, cellspacing, class, dir, height, id, lang, rel, role, style, tabindex, title, and width.

Additionally, some elements support specific attributes. These are listed below:

ElementAttributes
aaccesskey, charset, href, name, target, type
blockquotecite
colspan
delcite
figurelongdesc
fontcolor, face, size
imglongdesc, alt, src
inscite
olstart, type
qcite
tableborder, cellpadding, cellspacing, summary
tdabbr, axis, colspan, rowspan
thabbr, axis, colspan, rowspan, scope
ultype

Allowed protocols for URI attributes are:

ElementAttributeProtocols
ahrefftp, http, https, mailto
blockquotecitehttp, https
delcitehttp, https
imgsrccid, data, http, https
inscitehttp, https
qcitehttp, https

Any other element or attribute may be ignored by Squash TM.
(Additionally, future Squash TM releases may reject the import of a file containing HTML elements or attributes not present in this list.)