Content
View differences
Updated by Andrej Sandorf 6 days ago
### Goal
Let users create work packages in bulk from a spreadsheet.
### Requirements
* Accept `.csv`
_To specify_: Handle encoding issues with the file
* Column contract
* Downloadable template for creating new CSV files
* Column reference in docs/user-guide/
* _To specify_: Core attributes: subject, type, description, estimated hours, percent complete, dates
* Must exist vs create on-the-fly - may not be possible because of necessary admin rights)
* _To specify_: status, priority, assignee by name
* _To specify:_ Custom fields by name?
* _To specify:_ Parent / hierarchy by row number, external ID?
_To specify:_ Relations by row number, external ID?
* _To specify:_ Version and category by name?
* _To specify:_ Backdate journals if created\_at and/or updated\_at are part of the data
* Error handling
* Validate the header row once, up front, and report unknown or ambiguous columns before any row is processed.
* Report the line number of each error encountered
* An error rolls back all changes
* Row or file-size limit
* Permission
* A dedicated `import\_work\_packages` permission, modelled on `export\_work\_packages`
* Not admin-only
* UI
* On the project level (_To specify: where?)_
* _To specify:_ Upload page with a downloadable sample file
* _To specify:_ Dry-run toggle
* _To specify:_ Reports progress
* _To specify:_ Is abortable
* Runs as a background job (_To specify:_ progress needed?)
* _To specify:_ notifications to imported work packages are created (e.g. assignee) or suppressed
* Tag journals with `Journal::CausedByImport`
* Feature flag
### Out of scope
* User specified column mapping
* Attachments
* API endpoint
* Historic import (multiple rows for different states of the same work package)
* XLS/XLSX
<br>
Let users create work packages in bulk from a spreadsheet.
### Requirements
* Accept `.csv`
_To specify_: Handle encoding issues with the file
* Column contract
* Downloadable template for creating new CSV files
* Column reference in docs/user-guide/
* _To specify_: Core attributes: subject, type, description, estimated hours, percent complete, dates
* Must exist vs create on-the-fly - may not be possible because of necessary admin rights)
* _To specify_: status, priority, assignee by name
* _To specify:_ Custom fields by name?
* _To specify:_ Parent / hierarchy by row number, external ID?
_To specify:_ Relations by row number, external ID?
* _To specify:_ Version and category by name?
* _To specify:_ Backdate journals if created\_at and/or updated\_at are part of the data
* Error handling
* Validate the header row once, up front, and report unknown or ambiguous columns before any row is processed.
* Report the line number of each error encountered
* An error rolls back all changes
* Row or file-size limit
* Permission
* A dedicated `import\_work\_packages` permission, modelled on `export\_work\_packages`
* Not admin-only
* UI
* On the project level (_To specify: where?)_
* _To specify:_ Upload page with a downloadable sample file
* _To specify:_ Dry-run toggle
* _To specify:_ Reports progress
* _To specify:_ Is abortable
* Runs as a background job (_To specify:_ progress needed?)
* _To specify:_ notifications to imported work packages are created (e.g. assignee) or suppressed
* Tag journals with `Journal::CausedByImport`
* Feature flag
### Out of scope
* User specified column mapping
* Attachments
* API endpoint
* Historic import (multiple rows for different states of the same work package)
* XLS/XLSX
<br>