# Epic OP-10011 - Project folders for file storages

Project: OpenProject
Status: closed
URL: https://community.openproject.org/work_packages/OP-10011

## Detailed specification

### Motivation and background information

### Acceptance criteria

### Out of scope

| Attribute | Value |
| --- | --- |
| Mockups |  |

## Planning

| Attribute | Value |
| --- | --- |
| Roadmap |  |
| Date |  |
| Votes | 3 |
| List |  |
| Target versions | 13.0.0 |
| Sprint | 13.0.0 |
| Backlog bucket |  |
| Relevance |  |

## Subitems

| ID | Type | Subject | Status | Assignee | Target versions | Project | Priority | Spent time |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| OP-11976 | Feature | Project member navigates to project storage | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12022 | Feature | Project member is directed to project folder | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12026 | Feature | Project admin chooses between manual and automatic project folder | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12027 | Feature | Project admin configures new project storage together with project folder | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12028 | Feature | Automatic repair of missing or wrong permissions for project folders | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12030 | Feature | Project members experience a fully automatically managed project folder | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12697 | Feature | Danger zone when deactivating a storage on a project | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12957 | Feature | Delete project folders on project's storage deletion. | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12958 | Feature | Delete project folders on project deletion | closed |  | 13.0.0 | OpenProject | Medium |  |
| OP-12961 | Feature | Delete project folders on storage deletion | closed |  | 13.0.0 | OpenProject | Medium |  |
| NEX-226 | Feature | [NC] Create a group folder  `OpenProject` | closed | Ivana Šugić | Nextcloud Integration 2.4.0 | Stream Nextcloud app "OpenProject Integration" | Medium |  |
| OP-12962 | Feature | Notify project's member to log in to Nextcloud | in specification | Wieland Lindenthal |  | OpenProject | Medium |  |

## Bugs and other work packages

| ID | Type | Subject | Status | Assignee | Target versions | Module |
| --- | --- | --- | --- | --- | --- | --- |
| OP-13106 | Bug | Access to project folders for non members and admins. | closed |  | 13.0.0 |  |
| OP-13079 | Bug | Hide automatically manged project folders if project has been archived. | closed |  | 13.0.0 |  |
| OP-11979 | Task | Investigate Nextcloud API | closed |  | 13.0.0 |  |
| OP-13080 | Bug | Automatically managed folders don't work | rejected | Pavel Balashou | 13.0.0 |  |
| SI-228 | Bug | DangerDialog text is unnecessarily convoluted | closed |  | 17.1.0 | Modules and project features / File storages, Administration, Modules and project features / Project settings |

## Details

| Attribute | Value |
| --- | --- |
| Module |  |
| Enterprise plan |  |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee | Wieland Lindenthal |
| Accountable | Wieland Lindenthal |
| Product manager |  |
| Designer | Marc Alcobé |
| Developers |  |
| Requested by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| Work |  |

## Description

## Problem

When organisations structure work in projects they usually have files that belong to that project.

  - Many of these files have a longer life cycle as work packages and are relevant to many work packages.
  - Some files are relevant to the project but are not linked to any specific work package.

***Example:** One task could be to sketch a draft and the next task could be to finalize the document. That would make two work packages for one document. After the document is finalized and the last work package is closed, you still want to know where the document is stored, no matter if the project simply continues or even gets archived.*

The challenge of this EPIC is to allow all project members access to that shared folder so that everybody has access to either read, write or share all files in that folder. Having the sharing synced boosts productivity and acceptance in the project team. No tedious manual sharing is necessary.

## Current work around

Currently some organizations use the OpenProject module *Documents* to share files with team members. However, that module lacks usability in many ways:

  - Files uploaded to that module are not synced with a Desktop, as it lacks WebDAV etc.
  - This leads to the inconvenience that uploading of files needs to be done one by one instead of complete folders.
  - Referencing those files from within work packages (as "inputs" or "outputs" of a task) with normal HTML links is a tedious and error prone process. It is not efficiently supported.

Working with the *Documents* module is OK, when you only want to share a couple of documents that you rarely update. Real work on those files is not practical.

## Proposed Solution

In OpenProject we allow project admins to choose or create a folder in an external file storage such as *Nextcloud* per project. The OpenProject project menu will have a menu item called "File storage" (<mention class="mention" data-id="46242" data-type="work_package" data-text="##46242">##46242</mention>). Clicking that menu item the user leaves OpenProject and will directly open the shared folder in the web interface of the external file storage.

Every time memberships of a OpenProject project change, the system needs to provide a way to ensure correct permission for the project folder inside the storage:

1.  Add permissions for new memberships
2.  Remove permissions when memberships are removed

If the storage provider is capable enough, a fully managed solution can be considered. In that case OpenProject can take care of adjusting permissions automatically.

#### New file sharing permissions per project

In order to allow seamless integration of a *project folder* with a project, additional project permissions might need to be added:

  - Read files
  - Write files
  - Create files
  - Delete files
  - Share files

#### Fixing/re-syncing sharing permissions per project

OpenProject and the file storage instance are two independent systems. Network communication between the two can fail for a multitude of reasons. Therefore it is crucial that failed request for sharing can be triggered anew manually.
